Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.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#u join()逻辑错误+; 我正在学习C++中的p螺纹。我曾在某个时候结巴过,在网上搜索过,但是所有页面上都有相同的句子,但是没有任何关于这个句子的解释。我听不懂下面的句子_C++_Pthreads - Fatal编程技术网

在c+;中使用pthread#u join()逻辑错误+; 我正在学习C++中的p螺纹。我曾在某个时候结巴过,在网上搜索过,但是所有页面上都有相同的句子,但是没有任何关于这个句子的解释。我听不懂下面的句子

在c+;中使用pthread#u join()逻辑错误+; 我正在学习C++中的p螺纹。我曾在某个时候结巴过,在网上搜索过,但是所有页面上都有相同的句子,但是没有任何关于这个句子的解释。我听不懂下面的句子,c++,pthreads,C++,Pthreads,加入线程可以匹配一个pthread_join()调用。在同一线程上尝试多个联接是一个逻辑错误。 这是从这个链接: 你能解释一下这个句子的意思吗?你能举例说明逻辑错误是什么吗 什么是“连接线”?也就是说,主线程创建一个子线程,主线程等待子线程完成其任务。好啊在这种情况下,哪一个是连接线程,主线程还是子线程?例如,如果main()线程在一个线程上连接了两次 pthread_t t1; pthread_create(&t1, ....); pthread_join(t1, NULL);

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

这是从这个链接:

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


什么是“连接线”?也就是说,主线程创建一个子线程,主线程等待子线程完成其任务。好啊在这种情况下,哪一个是连接线程,主线程还是子线程?

例如,如果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).
main worker 1
|
|
pthread_create+----------->+
|            |
|            |
pthread⁞u join⁞|
|————(现在完成)

┴ +一旦一个线程被加入,它就不存在了,因此再次尝试加入(现在不存在)线程显然是一个错误。好的。如果有多个线程试图连接同一个线程,会发生什么情况?可以吗?就是尝试使用同一个线程连接多个线程。如果你这样做,程序从此无效。@oiyio:你就是在问题中引用这是一个逻辑错误的人。这就是你的全部问题。所以,不,这不好!!是的,但它不是“多个线程”,而是由不同线程“多次”。例如,main()与thread1连接,thread2与thread1连接。这也是无效的。它也是thread1。记住,没有必要在每个线程上调用pthread_join()。这只是一个例子,比如说,主线程创建了thread1和thread2。1-是否可能“主线程和线程2同时连接线程2”?2-是否可能“thread1 join thread2”,换句话说,一个线程是否可以由一个不是其父线程的线程连接?@oiyio:这两个问题的答案都是肯定的。