如何使用OR原语使用信号量锁定某些线程?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用OR原语使用信号量锁定某些线程?相关的知识,希望对你有一定的参考价值。
我正在考虑一个例子来进一步评估我的问题。考虑三个线程,T_1,T_2和T_3。
- 如果T_1在T_1完成其主段之后无法执行,那么我只需在T_2的开头放置一个semwait(),并将semsignal()置于相同的信号量。
- 如果T_2在T_1和T_3完成其主代码段之后才能执行,那么我将简单地让T_2在T_1和T_3的末尾等待两个semsignal()函数。
但是如果在T_1或T_3完成主代码段之前T_2无法执行怎么办?如果我让它等待一些OR函数,它可能会在第一个表达式上被阻塞,甚至没有测试第二个表达式,因为T_1不允许它运行但是T_3会运行。所以我的问题是我怎么能让它等待这种情况呢?
答案
你能这样做吗?
Taq酶
...
sem_wait(s1)
T1,Tz
...
mutex_lock(m1)
if (!signaled) {
sem_signal(s1)
signaled = true;
}
mutex_unlock(m1)
以上是关于如何使用OR原语使用信号量锁定某些线程?的主要内容,如果未能解决你的问题,请参考以下文章
python多线程编程—同步原语入门(锁Lock信号量(Bounded)Semaphore)