[英]How to synchronize access of shared data between tasks?
我正在使用.net核心和任务进行一些并行工作,基本上就像两个生产者和一个使用者,两个任务将写入数据,而使用者将以三位.net代码读取数据,这些都是由线程完成的,我可以使用Semaphore
或Mutex
或EventHandle
在线程之间进行同步,但是我阅读了基于任务的新代码,我不再使用它们,因为不能保证异步函数将在等待后在同一线程上恢复,所以应该怎么做?我在不同任务之间进行同步?
如何在不同任务之间进行同步?
由于您具有生产者/消费者系统,因此可以使用BufferBlock<T>
,它充当异步兼容的生产者/消费者队列。
从更一般的意义上讲,是协调原始替换,请参阅我的AsyncEx.Coordination库 。 或者您可以建立自己的 。 .NET唯一内置的一个是SemaphoreSlim
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.