Cratical Section(临界区),适用范围是单一进程的各线程之间。
一个局部性对象,不是一个核心对象。
不能同时有一个以上的 cratical section。
无法侦测是否已被某个线程放弃。
Mutex
Mutex是一个核心对象。可以在不同的线程之间实现“排他性占有”,
即使线程分属不同进程。
一个核心对象。
如果拥有mutex的线程结束,会产生一个"abandoned"错误信息。
可以具体化名字,可以被其他进程开启。
只能被拥有它的那个线程释放。
Semaphore 被用来追踪有限的资源。
一个核心对象。
没有拥有者。
可以具体化名字,可以被其他进程开启。
可以被任意一个线程释放。
Event object 通常用于overlaped IO
一个核心对象。
适用于设计新的同步对象。
请求可以遗失掉。
可以具体化名字,可以被其他进程开启。
Interlocked Variable是一组函数,通常被使用于spin-lock(一种busy-loop,被预期在极短的时间内运行,所以有最小的负荷),也被经常用于引用计数特点
允许对4字节的数值有些基本的同步操作,不需动用临界区或者互斥器 。
在SMP(Symmetric Multi-Processors)操作系统中亦可有效的运作。