c# - 线程安全问题

标签 c# .net multithreading thread-safety

我知道我们需要注意类内部静态成员变量的线程安全。我们需要担心实例成员变量吗?

最佳答案

这取决于您是否希望您的类型是线程安全的……以及您的意思。

大多数时候,我认为记录类型不是线程安全的是完全合理的,但可以通过适当的同步从不同线程安全地使用。大多数 .NET 类型都属于这一类。

这样你通常可以确保只有“协调”对象需要担心同步,而不是在每个方法和属性中都加锁 - 这种策略很痛苦,并且不能真正解决你更广泛的同步问题无论如何都可能遇到。

当然,将自然用于多个线程的类型——那些专门设计用于启用并发的类型,或服务定位器等,应该是线程安全的——并记录在案。同样,完全不可变类型从一开始就自然是线程安全的。

最后,还有什么才算是“线程安全”的问题。你应该阅读 Eric Lippert's blog post在这件事上澄清你应该考虑和记录什么样的事情。

关于c# - 线程安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4744584/

相关文章:

c# - 向 DataGridView 行标题添加文本

c# - UnityContainer.Resolve 比 Activator.CreateInstance 有什么优势?

java - 在完全初始化(由另一个线程)之前(在一个线程中)使用的类?

c# - 这个测试对于测试并发问题有意义吗?

c# - 在运行时指定通用委托(delegate)类型参数

c# - 如何评论为什么可以忽略捕获

c# - 使用工厂解决依赖

c# - 将值绑定(bind)到复杂类型

.net - 有没有办法避免 XmlSerializer 在反序列化时不初始化 null 属性?

java - 如何从线程返回