1.临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
2.互斥量:为协调共同对一个共享资源的单独访问而设计的。
3.信号量:为控制一个具有有限数量用户资源而设计。
4.事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。
总结:
1. 互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建互斥量需要的资源更多,所以如果只为了在进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用量。因为互斥量是跨进程的互斥量一旦被创建,就可以通过名字打开它。
2. 互斥量(Mutex),信号灯(Semaphore),事件(Event)都可以被跨越进程使用来进行同步数据操作,它们都可以是内核的,而其他的对象与数据同步操作无关,但对于进程和线程来讲,如果进程和线程在运行状态则为无信号状态,在退出后为有信号状态。所以可以使用WaitForSingleObject来等待进程和线程退出。