pthread_cond_signal和pthread_cond_timedwait 的先后顺序问题
先说一下应用场景:
main thread{
...
//需要退出子线程
pthread_cond_signal()
}
son_thread{
while(1)
{
//do somthing
pthread_cond_timedwait()
}
}
我发现:
//signal the cond 才能使得正在的pthread_cond_wait可以返回
pthread_cond_signal(&(seq->m_cond));
//destroy the cond 才使得后来的pthread_cond_wait可以返回
pthread_cond_destroy(&(seq->m_cond));
所有如果我们需要在 pthread_cond_timedwait()中根据返回的值来判断是否timeout,还是signal,从而退出子线程。我们必须在主线程中都调用pthread_cond_signal()和pthread_cond_destroy()。
也就是说子线程,在pthread_cond_timedwait()之前,主线程即使调用了pthread_cond_signal()都是没有作用的。
这跟智谱的AI给出的答案是不一样的,AI是错的:


浙公网安备 33010602011771号