我想知道,当thread_1多次向p_read_cond_signal发送一个已经收到信号且仍在进行中的thread_2(等待pthread_cond_wait)时会发生什么。
在上述任何一种情况下,我们都可以获取任何错误消息,以便我们可以采取适当的措施(例如在thread1中返回适当的错误)
非常感谢。
答案 0 :(得分:1)
我想了解,thread_1发送时会发生什么 pthread_cond_signal多次到一个thread_2(等待 pthread_cond_wait)已经收到信号但仍在 进展。
首先你不能这样做。 pthread_cond_signal
对条件变量执行操作;它没有发出任何特定线程的信号。我想你的意思是询问线程调用时会发生什么
pthread_cond_signal
,指定此时没有服务员的简历。
- thread_1会阻止信号处理吗?
- OR将在thread_2中忽略该信号并且thread_1继续执行
醇>
后者。 pthread_cond_signal
不应被解释为尝试向任何特定线程发送消息。如果有任何消息,那么它就是内核,或者通过它来传递CV。在任何情况下,如果执行此类调用而没有线程在指定的CV上等待,则它不起作用。它肯定不会阻止调用线程。
在上述任何一种情况下,我们都可以获取任何错误消息,以便我们可以 采取适当的行动(如在thread1中返回适当的错误)
不,因为发信号通知没有服务员的CV并不是错误。如果您正在寻求执行某种同步消息交换,那么您可以在互斥和简历之上执行此操作,但是它们本身并不能提供您想要的内容。