标签:
为了避免多个线程同时访问同一个数据而产生不可预料的结果,需要将各个线程对同一数据的访问同步。同步最常见的方法就是用锁。
接下来介绍常用的锁。
Binary Semaphore是最简单的一种锁,只有两种状态:占用与非占用。适合只能被唯一一个线程独占访问的资源。
Semaphore允许多个线程并发访问资源。初始值为N的信号量允许N个线程并发访问资源。线程访问资源时,将信号量减1;访问完资源后,将信号量加1。当信号量的值为0时,线程进入等待状态。
Mutex类似Binary Semaphore。他们的不同在于:
Critical Section是比Mutex更严格的同步方法。
Critical Section和Mutex与Semaphore的区别:
Read-Write Lock适合读取频繁,偶尔写入的情况。Read-Write Lock有两种获取方式,共享或独占。
Condition Variable类似一个栅栏。条件变量可以让许多线程一起等待某个事件的发生,当事件发生时(条件变量被唤醒),所有线程都一起恢复运行。
标签:
原文地址:http://www.cnblogs.com/luckysimple/p/5340630.html