【发布时间】:2011-01-07 19:05:37
【问题描述】:
有很多文章和讨论解释了为什么构建线程安全类是好的。据说如果多个线程访问例如同时一个领域,只能有一些不好的后果。那么,保持非线程安全的代码有什么意义呢?我主要关注 .NET,但我认为主要原因与语言无关。
例如.NET 静态字段不是线程安全的。 如果它们默认是线程安全的,结果会是什么? (无需执行“手动”锁定)。使用(实际上默认为)非线程安全有什么好处?
我想到的一件事是性能(不过更多的是猜测)。相当直观的是,当一个函数或字段不需要是线程安全的时,它不应该是。然而,问题是:为了什么?线程安全只是您始终需要实现的额外代码量吗?在什么情况下我可以 100% 确定,例如一个字段不会同时被两个线程使用?
【问题讨论】:
标签: c# .net multithreading language-agnostic thread-safety