不说这些了,,来写具体我们可以理解的啦。。
有两种基本信号:二进制信号和计数信号量。二进制信号的值只能是0或1,计数信号量可以是任意非负值。二进制信号在逻辑上相当于一个互斥锁。 但是,尽管不会强制,但互斥锁应当仅由持有该锁的线程来解除锁定。因为不存在“持有信号的线程”这一概念,所以,任何线程都能够执行V或sem_post(3RT)操作。计数信号量和互斥锁一起使用时的功能几乎和条件变量相同强大。在许多情况下,使用计数信号量实现的代码比使用条件变量实现的代码更为简单。但是,将互斥锁用于条件变量时,会存在一个隐含的括号。该括号能够清楚表明程式受保护的部分。对于信号则不必如此,能够使用并发编程当中的go to对其进行调用。信号的功能强大,但是容易以非结构化的不确定方式使用。
|