C# 多个线程处理“生产-处理-存储”三个过程的问题

A线程用于采集(A1、A2、A3三种数);B1线程用于处理A1,C1线程用于存储B1结果;B2线程用于处理A2,C2线程用于存储B2结果;B3线程用于处理A3,C3线程用于存储B3结果;需要严格顺序执行,之前用过Look、Monitor都没能解决,是我代码的问题吗?还是得用ManualResetEvent ?目前准备参考学习: C# 多线程(lock,Monitor,Mutex,同步事件和等待句柄) - SkySoot - 博客园 本篇从 Monitor,Mutex,ManualResetEvent,AutoResetEvent,WaitHandler 的类关系图开始,希望通过本篇的介绍能对常见的线程同步方法有一个整体的认识,而 https://www.cnblogs.com/SkySoot/archive/2012/04/02/2430295.html

不太明白你的严格顺序执行是怎么流程。
如果a1,a2,a3数据没有关联的话不是直接开3个线程各处理各的就进行了,采集-》处理-》存储,都不需要加锁。

如果A1到A3之间有顺序,那么B1到C3的操作都放到一个线程里面
如果没有顺序,那就分开开3个线程

给个粗暴点的方法:直接整6个队列(Queue),三个队列用于存储需要分析的数据(A1、A2、A3),另外三个队列用于存储处理完成的结果(B1、B2、B3)。A线程采集到数据后,根据数据内容分别丢到用于存储数据的三个分析队列中。B的三个线程分别遍历出队这三个队列,有数据就处理分析,没有就不管。B的线程处理的到结果后分别丢到对应的三个存储队列,C的线程负责遍历出队三个存储队列,有数据就存储,没有就不管。
简单点说就是A线程负责采集数据入分析队列;B线程负责分析队列出队,存储队列入队;C线程负责存储队列出队。所有线程都打开,出队有数据就处理,没数据就不管。