pthread_cond_signal和pthread_cond_wait,错误检查

时间:2017-05-11 16:11:56

标签: c pthreads

我想知道,当thread_1多次向p_read_cond_signal发送一个已经收到信号且仍在进行中的thread_2(等待pthread_cond_wait)时会发生什么。

  1. thread_1会阻止信号处理吗?
  2. OR将在thread_2中忽略该信号并且thread_1继续执行
  3. 在上述任何一种情况下,我们都可以获取任何错误消息,以便我们可以采取适当的措施(例如在thread1中返回适当的错误)

    非常感谢。

1 个答案:

答案 0 :(得分:1)

  

我想了解,thread_1发送时会发生什么   pthread_cond_signal多次到一个thread_2(等待   pthread_cond_wait)已经收到信号但仍在   进展。

首先你不能这样做。 pthread_cond_signal对条件变量执行操作;它没有发出任何特定线程的信号。我想你的意思是询问线程调用时会发生什么 pthread_cond_signal,指定此时没有服务员的简历。

  
      
  1. thread_1会阻止信号处理吗?
  2.   
  3. OR将在thread_2中忽略该信号并且thread_1继续执行
  4.   

后者。 pthread_cond_signal不应被解释为尝试向任何特定线程发送消息。如果有任何消息,那么它就是内核,或者通过它来传递CV。在任何情况下,如果执行此类调用而没有线程在指定的CV上等待,则它不起作用。它肯定不会阻止调用线程。

  

在上述任何一种情况下,我们都可以获取任何错误消息,以便我们可以   采取适当的行动(如在thread1中返回适当的错误)

不,因为发信号通知没有服务员的CV并不是错误。如果您正在寻求执行某种同步消息交换,那么您可以在互斥和简历之上执行此操作,但是它们本身并不能提供您想要的内容。