互斥与信号量的区别
2014-03-25 17:00
127 查看
1. 互斥量用于线程的互斥,信号量用于线程的同步。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对
资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,
同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源
以上区别是主要想记住的。
note:信号量可以用来实现互斥量的功能
2. 互斥量值只能为0/1,信号量值可以为非负整数。
也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问。
3. 互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对
资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,
同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源
以上区别是主要想记住的。
note:信号量可以用来实现互斥量的功能
2. 互斥量值只能为0/1,信号量值可以为非负整数。
也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问。
3. 互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。
相关文章推荐
- C 信号量与互斥锁的区别
- 互斥锁 临界区 信号量 事件的区别
- 条件变量与互斥锁、信号量的区别
- 信号量与互斥锁的区别
- 二进制信号量,互斥信号和计数信号量的区别
- 互斥同步-临界区,互斥量,信号量,事件的区别
- 信号量与互斥锁使用区别
- 互斥锁 临界区 信号量 事件的区别
- 自旋锁、信号量、互斥锁的介绍和区别
- 互斥(mutext)和信号量(semaphore)的区别
- 互斥锁和信号量的区别
- 学习笔记 --- LINUX的同步互斥机制 --- 自旋锁与信号量的区别
- 线程同步互斥的控制方法 互斥信号量的区别【转】
- Linux基础:信号量和互斥的联系与区别
- 互斥信号量和二进制信号量的区别
- 临界区 互斥 信号量和事件 的区别
- 线程同步互斥的控制方法 互斥信号量区别
- 互斥信号量和二进制信号量的区别
- 临界区,互斥事件,互斥对象,信号量的区别
- 临界区、互斥、信号量、事件区别