缘起:
假设有一个类myClass, myclass里有一个count属性.
在多线程的环境下 每个线程中 直接使用count++, 如果两个线程并行执行时, 两个线程中的一个的结果会被覆掉, 非线程安全.
这里可以用interlocked.compareExchanged 来确保它的原子性. 代码如下
public class myclass { public int count{set;get;} public int Add(int addend) { do{ init = Count; result = init + addend;
} //当init == count时, init = result; 返回init; //当init !=count时, init 不变化 返回init; while( init !=interlocked.compareExchanged(ref Count, result ,init ) ) } }