多线程摘记

基元线程同步构造:

用户模式构造(速度快,适合频次比较高的情形,但等待时无法释放CPU资源):
1.Thread.VolatileWrite,VolatileRead和MemoryBarrier三个方法都是为了保证程序的顺序,禁止编译器优化。在声明变量时加上volatile关键字也可起到同样的效果,虽然简化了操作但会降低性能,声明的变量也有一些使用限制,例如自增变慢,无法使用ref传递等。
2.Threading.Interlocked类提供的所有方法都是原子操作,每个方法都建立了完整的内存栅栏,确保执行顺序。主要的方法包括Increment,Decrement,Add,Exchange,CompareExchange等。

内核模式构造(可以让资源竞争中输掉的线程停止自旋,节省CPU,但内存不会节省,资源可用时自动唤醒,但每次切换代价较大,适合频次比较小的情形):
System.Threading.WaitHandle.WaitXXX(...)方法。
原文地址:https://www.cnblogs.com/nanfei/p/5189392.html