|
1
7
它可以影响性能,但就是这样。 可能还有另一个危险:你诱使自己去思考,既然一切都是不稳定的,你的代码是线程安全的。事实并非如此,而且没有替代方法可以真正理解代码的线程含义。如果你这样做了,你就不需要把事情的不稳定性标记为“以防万一”。 但对于您的直接问题:不,您永远不会接受功能正确的代码,并通过使变量违反来破坏它。 |
|
|
2
11
明显的影响是一些小的性能影响,因为编译器被禁止使用 certain optimizations .然而,更糟糕的影响是错误的安全感。仅仅因为一个变量是不稳定的,并不意味着用它所做的一切现在都是线程安全的,除非对它进行的所有操作都是原子操作(否则,在观察和该变量的突变之间可能会存在断开)。 仍然需要适当的同步块。你的方法天生就有缺陷。抱歉,但是获得线程安全性并不是那么简单。 第三个问题是它使代码的真正用途更加模糊。如果所有变量都标记为volatile,那么读者如何知道哪些变量真正依赖于该属性,哪些变量不依赖于该属性?这种默默无闻造成了代码维护负担中的隐藏成本,也称为技术债务。 |
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 1 年前 |
|
|
András Takács · Python多线程错误 1 年前 |