使用超时变量误解信号量进程

时间:2013-12-27 10:54:01

标签: c semaphore

我是信号量流程的新手,我想知道sem_waitsem_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)

0 个答案:

没有答案