#include <stdio.h>
#include <pthread.h>
void* thread(void *v) {
printf("The thread starts now\n");
//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: %d\n",tid1, retValue);
retValue = pthread_join(tid1, NULL);
printf("Thread ID: %d, return value: %d\n",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
1
movq OP 解决了,tid1 应该设置成 pthread_t 而不是 int
|
2
crclz 2021-02-01 15:30:09 +08:00
所以说不要漏掉 warning
|