confide

导航

unix编程——通信总结

信号量、互斥锁和条件变量之间的差异

1、互斥锁必须总是由给它上锁的线程解锁,信号量的挂出(V操作)却不必由执行过它的等待(P操作)的同一线程执行。

2、互斥锁要么被锁住,要么被解开。

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

Posix提供互斥锁和条件变量,同时又提供信号量的原因是:通常互斥锁和条件变量应用于线程间同步,信号量应用于进程间同步,但是他们也都可以应用于进程和线程同步。

posted on 2012-02-21 16:43  confide  阅读(202)  评论(0)    收藏  举报