【发布时间】:2015-03-05 10:53:18
【问题描述】:
老实说,我不知道如何开始编写这个代码。我现在正在研究有关线程和锁定的事情。但是你能给我一些关于如何实现这一目标的见解吗?
【问题讨论】:
标签: c# multithreading thread-safety locking queue
老实说,我不知道如何开始编写这个代码。我现在正在研究有关线程和锁定的事情。但是你能给我一些关于如何实现这一目标的见解吗?
【问题讨论】:
标签: c# multithreading thread-safety locking queue
这不是和consumer producerproblem很像吗?
您有客户下订单和等待处理它们的线程。唯一的区别是您有产品类别,这意味着订单由多个线程处理,具体取决于产品类型(例如:产品 A、产品 B)。
虽然编写代码很困难(这实际上是你的工作),但我会尝试提供一个你可以尝试采用的指南,
首先,您需要为每种产品类型提供单独的queues。队列保留FIFO 要求(检查documentation)。您需要为每个queue 设置一个单独的专用线程。该线程所做的是检查相关队列是否有产品要处理,如果有或没有任何产品可以设置为睡眠/空闲,则处理它们。
要使 queue 同步,您需要使用 wither locks (MSDN)。这意味着生产方法和处理线程需要访问共享资源,queue 没有竞争条件。
此外,您可以在队列中有项目时启动处理线程,并在队列为空时释放线程。但是我上面描述的所有观点对于这种情况仍然有效。
【讨论】: