pthread_join 为什么在这个代码里面不 block?
資深大佬 : movq 3
#include <stdio.h> #include <pthread.h> void* thread(void *v) { printf("The thread starts nown"); //pthread_exit(NULL); } int main() { int tid1; int retValue = 0; pthread_create(&tid1, NULL,thread, NULL); retValue = pthread_join(tid1, NULL); printf("Thread ID: %d, return value: %dn",tid1, retValue); retValue = pthread_join(tid1, NULL); printf("Thread ID: %d, return value: %dn",tid1, retValue); return 0; }
输出结果(某些时候)是:
Thread ID: 1877241856, return value: 3 Thread ID: 1877241856, return value: 3 The thread starts now Process finished with exit code 0
有几个疑问:
-
按理来说
pthread_join
先 block,等到thread
执行完,再执行下面的语句,为什么这里不等thread
执行完就继续执行了? -
为什么
pthread_join
返回的是 3 而不是 0 ?按照定义,返回值是 0 表示正常 join
大佬有話說 (2)