c# - C# .NET 中具有多个监听器的线程一次性变量赋值

标签 c# .net multithreading synchronization

我有一个类型为 Variable 的类,它包含一个类型为 Value 的字段,该字段最初未设置(null)但将被设置在未来的某个时候。多个线程可以访问一个 Variable 对象。具有签名 Variable.Set(Value v) 的方法只被调用一次并设置变量。许多其他线程应该能够调用 Variable.Wait() (在设置 Variable 之前和之后) 其中:

  • 如果 Variable 已经设置,应该立即返回。
  • 如果未设置Variable,应(有效地)等待它被设置,然后返回。

当我查看 API 时,我确信周围有一些明显的同步原语——监视器、事件、等待句柄或类似的东西——但我需要帮助来找出最简单、最有效的解决方案,因为我正在学习并行性在 .NET 中。

最佳答案

使用 Lazy 类型允许通过一些长时间运行的工作来计算某些特定值,并让任意数量的线程等待该值,或者使用已经计算出的值。

关于c# - C# .NET 中具有多个监听器的线程一次性变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29658283/

相关文章:

c# - 传递 Func<TSource, TKey> keySelector 错误

c# - 无法从 asp.net 网站项目中的 app_code 文件夹访问类

c# - 单独程序集中的 MVVM Light ViewModelLocator?设计时模式问题

javascript - Window.close() 不适用于关闭当前选项卡

java - 如何实现无限线程返回数据?

c++ - 中断任意等待操作

c# - log4net、CaSTLe Windsor 和 Global.asax 中的 Application_Error 方法

c# - MS 图表控件 : Formatting Axis Labels

c# - 比 File.Move 更快的文件移动方法

c# - Thread.Start() 不在 xamarin 中启动线程