代码改变世界

信号量(semaphore)和互斥量(mutex)

2011-04-01 22:21  会被淹死的鱼  阅读(680)  评论(0编辑  收藏  举报

最近学习多线程编程的时候, 遇到了信号量和互斥量的问题.

信号量(Semaphore)是通过一个计数器控制对共享资源的访问.

互斥量(Mutex)是用于线程的互斥, 信号量是用于线程的同步.

互斥是指某一资源同时只允许一个访问者对其进行访问, 具有唯一性和排它性. 但互斥无法限制访问者对资源的访问顺序, 即访问是无序的.

同步是在互斥的基础上(大多数情况), 通过其他机制实现访问者对资源的有序访问. 在大多数情况下, 同步已实现了互斥, 特别是所有写入资源的情况必定是互斥的.