pthread_join() 在 C++ 中使用 pthreads 的逻辑错误

pthread_join() logical error using pthreads in c++

我正在学习 C++ 中的 pthreads。我卡在某个点上并在网上搜索,但是所有页面中都存在相同的句子,但是没有对这句话进行任何解释。我看不懂下面的句子。

一个加入线程可以匹配一个 pthread_join() 调用。在同一线程上尝试多个连接是逻辑错误。

来自这个 link : http://www.bogotobogo.com/cplusplus/multithreading_pthread.php

你能解释一下这句话的意思吗?你能举例说明逻辑错误是什么吗?

什么是"joining thread"?也就是说,主线程创建一个子线程,主线程等待子线程完成它的工作。好的。在这种情况下,加入线程是主线程还是子线程?

例如,如果 main() 线程两次加入一个线程。

 pthread_t t1;

 pthread_create(&t1, ....);
 pthread_join(t1, NULL); 
 pthread_join(t1, NULL); /* The quoted sentence refers to cases like this */

同样适用于任何其他线程。

很简单:您只能加入一个话题一次。

                   main        worker 1
                     |
                     |
  pthread_create     +----------->+
                     |            |
                     |            |
  pthread_join       ⁞            |
        |            ⁞            | (done now)
        ┴            +<-----------+
                     |
                     |
                    (etc).