Contents

C# - The C# Memory Model in Theory and Practice讲了C#的内存模型和在并发下的影响。
内存操作重排:当一个线程读一段内存,如果这段内存同时被另外一个线程写,那么读的线程有可能拿到一个不新鲜的值。
用volatile关键字可以限制内存重拍。
原子读写操作:reference,bool,char,byte,sbyte,short,ushort,unit,int,float。
非重排优化,例如读一个field,然后存在一个variable中,后面被多次读到,有可能被优化成没有variable,直接多次从field中读取。

线程交换的模式:

通过Threading API
通过type初始化(static field)
通过volatile的filed
lazy initialize
Interlocked
使用Concurrency Primitives





Contents