简体   繁体   English

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

[英]How to synchronize access of shared data between tasks?

我正在使用.net核心和任务进行一些并行工作,基本上就像两个生产者和一个使用者,两个任务将写入数据,而使用者将以三位.net代码读取数据,这些都是由线程完成的,我可以使用SemaphoreMutexEventHandle在线程之间进行同步,但是我阅读了基于任务的新代码,我不再使用它们,因为不能保证异步函数将在等待后在同一线程上恢复,所以应该怎么做?我在不同任务之间进行同步?

how should I sync between different tasks? 如何在不同任务之间进行同步?

Since you have a producer/consumer system, you can use BufferBlock<T> , which acts as an async-compatible producer/consumer queue. 由于您具有生产者/消费者系统,因此可以使用BufferBlock<T> ,它充当异步兼容的生产者/消费者队列。

In the more general sense of coordination primitive replacements, see my AsyncEx.Coordination library . 从更一般的意义上讲,是协调原始替换,请参阅我的AsyncEx.Coordination库 Or you can build your own . 或者您可以建立自己的 The only one built-in to .NET is SemaphoreSlim . .NET唯一内置的一个是SemaphoreSlim

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM