【问题标题】:Multi-threaded queue for processing group products用于处理组产品的多线程队列
【发布时间】:2015-03-05 10:53:18
【问题描述】:

老实说,我不知道如何开始编写这个代码。我现在正在研究有关线程和锁定的事情。但是你能给我一些关于如何实现这一目标的见解吗?

【问题讨论】:

    标签: c# multithreading thread-safety locking queue


    【解决方案1】:

    这不是和consumer producerproblem很像吗?

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

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

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

    要使 queue 同步,您需要使用 wither locks (MSDN)。这意味着生产方法和处理线程需要访问共享资源,queue 没有竞争条件。

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

    【讨论】:

    • 感谢您的想法。我现在正在寻找你说的那些东西。
    • 不客气。还有一个建议,先尝试构建一个原型,使用虚拟数据和各种测试用例来验证解决方案。
    猜你喜欢
    • 2015-06-25
    • 2012-11-12
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2015-04-15
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多