选择适合线程安全计数器的正确方法:volatile
或Interlocked
Lock
需要仔细考虑线程安全。 存在三种主要技术:使用volatile
>关键字,使用Interlocked
>类并使用锁。让我们检查每种方法。
volatile
关键字:
>将字段声明为volatile
>可防止可以重新订购内存访问的编译器和JIT优化。这样可以确保跨线程可见性。但是,单独的volatile
不能保证原子。 线程仍然可以交流操作,从而导致不准确的计数器值。因此,不适合螺纹安全计数器。volatile
>
class:Interlocked
成为线程安全计数器的理想选择,提供可见性和原子性。Interlocked
Interlocked
> >锁(例如,使用语句)序列化对代码的关键部分的访问。 只有一个线程可以一次执行锁定的代码,从而保证线程安全。 但是,锁会引入性能开销,尤其是用于频繁的简单操作,例如计数器增量。 对于计数器,由于其出色的性能,通常优先于锁。
摘要:lock
Interlocked
类提供了性能和可靠性的最佳组合。它的原子操作确保在并发环境中准确的反更新,使其成为推荐的方法。
以上是挥发性,联锁或锁定:哪个最适合线程安全柜台?的详细内容。更多信息请关注PHP中文网其他相关文章!