我有一个类型为 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/