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是错的:

 

posted @ 2025-07-13 13:24  slowtech-QQ914100608  阅读(10)  评论(0)    收藏  举报