POSIX pthread多次使用相同的线程

时间:2013-10-08 12:21:39

标签: c++ multithreading pthreads posix

我正在处理,我相信,这是一个相当简单的问题,我似乎无法解决。

我的程序中有两个线程。线程运行得很好,但它是重用一个线程,导致问题。伪代码如下:

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属性,以便程序连续运行?

1 个答案:

答案 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;
}