我使用.net核心和任务进行一些并行工作,基本上它就像两个生产者和一个消费者,两个任务将写入数据,消费者将读取它,在tranditioanal .net代码中,这些都完成了通过线程,我可以使用Semaphore
或Mutex
或EventHandle
进行线程之间的同步,但是对于新的基于任务的代码,我读到我不能再使用这些,因为没有保证在等待之后异步函数将在同一个线程上恢复,那么我应该如何在不同的任务之间进行同步呢?
答案 0 :(得分:2)
我应该如何在不同的任务之间进行同步?
由于您有生产者/消费者系统,因此可以使用BufferBlock<T>
,它充当与异步兼容的生产者/消费者队列。
在一般意义上的协调原语替换中,请参阅my AsyncEx.Coordination library。或者你可以build your own。 .NET内置的唯一内容是SemaphoreSlim
。