信号量互斥量同步变量条件变量和事件变量

Posted 蒲公英110

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号量互斥量同步变量条件变量和事件变量相关的知识,希望对你有一定的参考价值。

信号量:信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量。

 

互斥量:

互斥量是一个可以处于两态之一的变量:解锁和加锁。这样,只需要一个二进制位表示它,不过实际上,常常使用一个整型量,0表示解锁,而其他所有的值则表示加锁。互斥量使用两个过程。当一个线程(或进程)需要访问临界区时,它调用mutex_lock。如果该互斥量当前是解锁的(即临界区可用),此调用成功,调用线程可以自由进入该临界区。
另一方面,如果该互斥量已经加锁,调用线程被阻塞,直到在临界区中的线程完成并调用mutex_unlock。如果多个线程被阻塞在该互斥量上,将随机选择一个线程并允许它获得锁。

 

同步变量:

 

条件变量:

 

事件变量:

以上是关于信号量互斥量同步变量条件变量和事件变量的主要内容,如果未能解决你的问题,请参考以下文章

Linux 多线程同步机制:互斥量信号量条件变量

条件变量与互斥量

(转载)Linux 多线程条件变量同步

C#学习笔记---线程同步:互斥量信号量读写锁条件变量

LinuxC线程pthread线程同步进程同步-互斥量信号量条件变量读写锁文件锁

线程同步(互斥锁读写锁条件变量信号量)