我是信号量流程的新手,我想知道sem_wait
和sem_wait_timeout
之间的区别。
正如我所读到的,我认为它与减量值的行为相同。使用超时,我们可以解决死锁(电路等待)的一个条件。
什么是超时效果?我知道超时的值必须以毫秒为单位,但它是随机值还是我们必须定义它?
这是我的建议:
/*Init*/
sem_init (s1, 0 , 1);
sem_init (s2, 0 , 1);
/*Thread1*/
sem_wait_timeout (s1 , int timeout);
sem_wait_timeout (s2 , int timeout);
/*Critical section*/
...
sem_signal (s2)
sem_signal (s1)
主题2应为:
/*Thread2*/
sem_wait_timeout (s2 , int timeout);
sem_wait_timeout (s1 , int timeout);
/*Critical section*/
...
sem_signal (s1)
sem_signal (s2)