跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • pthread_join 为什么在这个代码里面不 block?
未分類
29 1 月 2021

pthread_join 为什么在这个代码里面不 block?

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 

有几个疑问:

  1. 按理来说pthread_join先 block,等到thread执行完,再执行下面的语句,为什么这里不等thread执行完就继续执行了?

  2. 为什么pthread_join返回的是 3 而不是 0 ?按照定义,返回值是 0 表示正常 join

大佬有話說 (2)

  • 主 資深大佬 : movq

    解决了,tid1 应该设置成 pthread_t 而不是 int

  • 資深大佬 : crclz

    所以说不要漏掉 warning

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具