情况:
现在是什么??? 哪个线程被唤醒了?
这是随机的吗?
但是,我总是希望线程B在线程C之前唤醒,因为B在C之前调用了wait。是否存在使用sync执行此操作的机制。机甲?如果需要,请清楚地提及使用任何其他数据结构!
答案 0 :(得分:0)
其实我在找这样的东西。 可以使用条件变量来实现序列化线程执行。
Mutex M;
Condition Variable C = 1;
thread_function_A()
{
pthread_mutex_lock(M);
while (C != 1)
pthread_cond_wait(C, M);
CRITICAL SECTION STARTS;
CRITICAL SECTION ENDS;
C++;
pthread_mutex_unlock(M);
}
thread_function_B()
{
pthread_mutex_lock(M)
while (C != 2)
pthread_cond_wait(C, M);
CRITICAL SECTION STARTS
CRITICAL SECTION ENDS
C++;
pthread_mutex_unlock(M)
}
thread_function_C()
{
pthread_mutex_lock(M)
while (C != 3)
pthread_cond_wait(C, M);
CRITICAL SECTION STARTS
CRITICAL SECTION ENDS
C++;
pthread_mutex_unlock(M)
}