用于处理组产品的多线程队列

时间:2015-03-05 10:53:18

标签: c# multithreading thread-safety locking queue

老实说,我不知道如何开始编码这个。我现在正在研究有关线程和锁定的事情。但是,您能否告诉我如何实现这一目标。

enter image description here

1 个答案:

答案 0 :(得分:1)

这与consumer producer problem类似吗?

您有客户下订单和线程等待处理它们。唯一的区别是您有产品类别,这意味着订单由多个线程处理,具体取决于产品类型(例如:产品A,产品B)。

虽然制作代码很难(实际上是你的工作),但我会尝试提供你可以尝试采用的指南,

首先,您需要为每种产品类型单独queues。队列保留FIFO要求(检查documentation)。并且您需要为每个queue分别设置一个专用线程。这个线程做的是检查相关队列是否有要处理的产品并处理它们,如果有或者没有任何产品可以设置为休眠/空闲。

要使queue同步,您需要使用枯萎locksMSDN)。这意味着生成方法和处理线程需要访问共享资源,queue没有竞争条件。

此外,当队列中有项目时,您可以启动处理线程,并在队列变空时处置线程。但是我上面描述的所有要点对于这种情况仍然有效。