zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux C编程中条件变量与互斥锁、信号量的区别

Linux编程变量 区别 条件 互斥 信号量
2023-09-11 14:19:00 时间

 

1.互斥锁必须总是由给它上锁的线程解锁,信号量的挂出即不必由执行过它的等待操作的同一进程执行。一个线程可以等待某个给定信号灯,而另一个线程可以挂出该信号灯。

2.互斥锁要么锁住,要么被解开(二值状态,类型二值信号量)。

3.由于信号量有一个与之关联的状态(它的计数值),信号量挂出操作总是被记住。然而当向一个条件变量发送信号时,如果没有线程等待在该条件变量上,那么该信号将丢失。

4.互斥锁是为了上锁而设计的,条件变量是为了等待而设计的,信号灯即可用于上锁,也可用于等待,因而可能导致更多的开销和更高的复杂性。