同步机制摘要
Critical Section
临界区用来实现 排他性占有 ,适用范围是单一进程的各线程之间,这旨:
一个局部性对象,不是一个核心对象
快速而有效
不能够同时有一个以上的Critical Section 被等
无法侦测是否已经某个线程放弃
Mutex
是一个核心对象,可以在不同的线程之间实现 排他性占有 ,甚至那些线程分属于不同进程,它是:
一个核心对象
如果拥有Mutex的那个线程结束,刚会产生一个 Abandoned 错误
可以使用Wait。。。()等一个Mutex
可以有名称,所以可以被其它进程使用
只能被拥有它的线程释放
Semaphore
被用来追踪有限的资源,它是
一个核心对象
没有拥有者
可以有名,因此可以被其它进程打开
可以被任何一个线程释放
Events Object
通常用于Overlapped I/O,或用来设计某些自定义的同步对象,它是:
一个核心对象
完全在程序掌控之下
适用于设计新的同步对象
要求苏醒 的请求并不会被储存起来,可能会遗失掉
可以有名称,因此可以被其他进程打开
Interlocked Variable
省