c# - 锁定写入属性

标签 c# .net multithreading thread-safety locking

在我的课上我有这个属性:

public List<MyObject> mCollection { get; set; }

这个集合在一些不同的线程中使用。

我想做的是仅当所有线程都完成读取 mCollection 时才允许写入此属性。

类似于获取和释放 token ,并且仅在释放所有 token 时才允许写入。框架中有类似的东西吗?

提前致谢

最佳答案

您可以通过多种方式实现这一目标。为简单起见,让您的读者通过彼此同步来合作。

  • 让读者使用 ReaderWriterLockSlim 获取读锁。让作者采取写锁。
  • 让读者发出 CountdownEvent 信号。让作者等一下。
  • 让所有的读者和作者都SignalAndWait成为一个Barrier,这样作者只有在每个人都完成后才会继续。

选择符合您的场景的内容。

关于c# - 锁定写入属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032334/

相关文章:

c# - 找不到 Entity Framework ADO.NET Sql.Data.Client 提供程序

c - 调用 pthread_join 函数后 main 不再继续

Java 同步未按预期工作

c# - 获取程序集可执行目录

c# - 运行 TCP 服务器应用程序时 CPU 使用率为 100%

c# - 无法创建用户

.net - 在 XAML 标记中使用图像资源?

c# - 从 C++ 升级到 C#

c# - 在 C# 泛型中,这两行代码是否相同?

windows - 在 Media Foundation 中使用 COINIT_APARTMENTTHREADED 或 COINIT_MULTITHREADED?