我正在考虑一个示例,以进一步评估我的问题。考虑三个线程T_1,T_2和T_3。
但是,如果T_2在T_1或T_3完成其主要代码段之前无法执行,该怎么办?如果我让它在某些OR函数上等待,则即使第一个表达式T_1不允许运行,而T_3允许它运行,它甚至可能不会测试第二个表达式就被阻塞。所以我的问题是,如何让它等待这种情况?
答案 0 :(得分:0)
你会喜欢吗?
T2
...
sem_wait(s1)
T1,T3
...
mutex_lock(m1)
if (!signaled) {
sem_signal(s1)
signaled = true;
}
mutex_unlock(m1)