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

C# 如何在任务之间同步访问共享数据?,c#,multithreading,task-parallel-library,.net-core,C#,Multithreading,Task Parallel Library,.net Core,我使用.net内核和任务进行一些并行工作,基本上就像两个生产者和一个消费者,两个任务将写入数据,消费者将读取数据,在Transditioanal.net代码中,这些都是由线程完成的,我可以使用信号量或互斥体或事件句柄在线程之间进行同步,但是对于新的基于任务的代码,我读到我不能再使用它们了,因为不能保证异步函数在等待后会在同一线程上恢复,所以我应该如何在不同的任务之间同步 我应该如何在不同任务之间同步 因为您有一个生产者/消费者系统,所以可以使用,它充当异步兼容的生产者/消费者队列 在更一般意义上

我使用.net内核和任务进行一些并行工作,基本上就像两个生产者和一个消费者,两个任务将写入数据,消费者将读取数据,在Transditioanal.net代码中,这些都是由线程完成的,我可以使用
信号量
互斥体
事件句柄
在线程之间进行同步,但是对于新的基于任务的代码,我读到我不能再使用它们了,因为不能保证异步函数在等待后会在同一线程上恢复,所以我应该如何在不同的任务之间同步

我应该如何在不同任务之间同步

因为您有一个生产者/消费者系统,所以可以使用,它充当异步兼容的生产者/消费者队列

在更一般意义上的协调原语替换中,请参见。或者你可以。.NET中唯一内置的是
SemaphoreSlim

我应该如何在不同任务之间同步

因为您有一个生产者/消费者系统,所以可以使用,它充当异步兼容的生产者/消费者队列


在更一般意义上的协调原语替换中,请参见。或者你可以。NET中唯一内置的是
信号量lim

,即
互斥体。OpenExisting
,你是什么意思?即
互斥体。OpenExisting
,你是什么意思?好的,谢谢,我会尝试AsyncEx,所有原始同步原语都在System.Threading中,System.Threading.Tasks中没有添加类似的东西,这是否意味着这种情况在TAP中很少见?或者当需要同步时,应该使用旧线程而不是任务?您最终需要使用TAP进行同步的频率会降低。在我看来,这部分是由于异步代码自然具有功能性,部分是由于它通常应用于的问题类型。在许多常见场景中,以前使用线程实现的功能现在可以不用它来实现。好的,谢谢,我将尝试AsyncEx,所有原始同步原语都在System.threading中,System.threading.Tasks中没有添加任何类似的功能,这是否意味着这种场景在TAP中很少见?或者当需要同步时,应该使用旧线程而不是任务?您最终需要使用TAP进行同步的频率会降低。在我看来,这部分是由于异步代码自然具有功能性,部分是由于它通常应用于的问题类型。在许多常见场景中,过去使用线程完成的任务现在可以不用线程完成。