如何在任务之间同步共享数据的访问?

时间:2017-07-27 14:52:46

标签: c# multithreading task-parallel-library .net-core

我使用.net核心和任务进行一些并行工作,基本上它就像两个生产者和一个消费者,两个任务将写入数据,消费者将读取它,在tranditioanal .net代码中,这些都完成了通过线程,我可以使用SemaphoreMutexEventHandle进行线程之间的同步,但是对于新的基于任务的代码,我读到我不能再使用这些,因为没有保证在等待之后异步函数将在同一个线程上恢复,那么我应该如何在不同的任务之间进行同步呢?

1 个答案:

答案 0 :(得分:2)

  

我应该如何在不同的任务之间进行同步?

由于您有生产者/消费者系统,因此可以使用BufferBlock<T>,它充当与异步兼容的生产者/消费者队列。

在一般意义上的协调原语替换中,请参阅my AsyncEx.Coordination library。或者你可以build your own。 .NET内置的唯一内容是SemaphoreSlim