Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我是否应该使用静态字段并互锁在一起,以防我需要使用静态字段提供线程安全和原子操作,静态字段是否默认是原子的?例如:
Interlocked.Increment(ref Factory.DefectivePartsCount);
谢谢。
是的。
该字段(假设为 Int32)是原子的,不是因为它是静态的,而是因为它是 32 位的。
但是,Factory.DefectivePartsCount += 1需要对变量执行读取和写入操作,因此整个操作不是线程安全的。
Factory.DefectivePartsCount += 1
static不保证线程安全方面的任何事情。因此,即使变量是 ,增量仍然不是原子的static。因此,您仍然需要根据情况使用经典的同步机制。在你的情况下Interlocked.Increment很好。
static
Interlocked.Increment