线程同步与锁
信号量(Semaphore)
二元信号量和多元信号量,是一个变量,获取-1,释放+1,当变量处于>0的情形下才可以被获取。一个线程的获取可以用另一个线程来释放。
互斥量(Mutes)
很像二元信号量,但是释放只能是本线程。
临界区(Critical Section)
临界区是比互斥量更加严格的同步手段,信号量和互斥量可以不同进程之间操作,也就是说“一个进程创建了一个互斥量或信号量,另一个进程试图去获取该锁是合法的。”,而临界区只能同进程的操作。
读写锁(Read-Write Lock)
读多写少的情形
条件变量(Condition Variable)
使用条件变量可以让许多线程一起等待某个事件的发生,当事件发生时(条件变量被唤醒),所有的线程可以一起恢复执行。