Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何从pthread列表中的任何一个pthread取消阻止pthread_C_Multithreading_Pthreads - Fatal编程技术网

C 如何从pthread列表中的任何一个pthread取消阻止pthread

C 如何从pthread列表中的任何一个pthread取消阻止pthread,c,multithreading,pthreads,C,Multithreading,Pthreads,在C中是否有任何pthread(来自许多以前指定的pthread)能够解除阻止被阻止的pthread的方法 i、 e.线程1被阻塞,它等待线程2/3/4之一解除阻塞 我知道障碍和条件等待/信号,但他们似乎不允许这样 我在想,如果有一种方法可以使用一个pthread的ID阻止另一个pthread,那么这可能是一个解决方案。。。但我也不确定如何做到这一点 有没有办法解决这个问题?谢谢:)pthread\u cond\u signal或sem\u post带有pthread\u cond\u sign

在C中是否有任何pthread(来自许多以前指定的pthread)能够解除阻止被阻止的pthread的方法

i、 e.线程1被阻塞,它等待线程2/3/4之一解除阻塞

我知道障碍和条件等待/信号,但他们似乎不允许这样

我在想,如果有一种方法可以使用一个pthread的ID阻止另一个pthread,那么这可能是一个解决方案。。。但我也不确定如何做到这一点


有没有办法解决这个问题?谢谢:)

pthread\u cond\u signal
sem\u post
带有pthread\u cond\u signal的线程1需要在特定的线程上等待,而不是在任何线程上等待。。。。使用信号量,线程2和线程3(例如)可以在线程1没有阻塞的情况下互相解除阻塞。我需要线程1和{2,3,4}阻塞中的一个一起解除阻塞,thanksHow你阻塞了线程吗?@Gabyazz不,你不需要等待一个带有条件变量的线程,你需要等待一个条件,你可以等待几个线程中的任何一个发出信号,解除阻塞你的线程。你在这里的评论与你的问题相反,在评论中你提到了取消阻止多个线程,而在问题中你只提到了你想取消阻止1个线程-因此请明确说明你希望你的程序做什么。对于任何误解,我深表歉意。。。线程1检查线程2、3或4是否处于特定状态,如果不是,则线程1将阻止并等待这三个线程中的任何一个解除阻止(一旦到达所需状态)。。。类似地,如果线程2、3、4中的任何一个在线程1之前到达所需状态,那么它们将阻塞并等待线程1逐个解除阻塞。