我正在处理,我相信,这是一个相当简单的问题,我似乎无法解决。
我的程序中有两个线程。线程运行得很好,但它是重用一个线程,导致问题。伪代码如下:
main() {
create thread 1;
create thread 2;
join thread 1;
}
thread 1 {
while true
if(some condition)
join thread 2
// Use the returned value from thread 2
}
thread 2 {
while true
if(some condition)
// do something
exit thread 2(with some return value to thread 1).
}
因此,当在线程1中满足某些条件时,我希望它能用于终结线程2,直到完成它,这很好用。线程2到达是条件并退出线程。但是,当我回到线程1的while循环中,并再次达到该条件时,我希望它再次重新运行线程2。这就是导致问题的原因。执行线程2一次后,线程1忽略我的连接语句,并在while循环中轮询,这是唯一运行的线程。
所以我的问题是。如何重用join thread 2属性,以便程序连续运行?
答案 0 :(得分:0)
执行线程2一次后,线程1忽略了我的连接语句,只是在while循环中轮询, 是唯一运行的线程。
请注意,在您的情况下,pthread_join()很可能会因错误而失败。检查其返回值。
但是,由于您的线程2已退出,因此没有线程可以等待。 您必须再次启动线程2。 那就是:
thread 1 {
while true
if(some condition)
join thread 2
// Use the returned value from thread 2
create thread 2;
}