#include #include using namespace std;
#define num_threads 5
void* say_hello(void* args)
int main()
}pthread_exit(null);
}
編譯、執行,結果如下:
current pthread id =139671233451792
current pthread id =139671222961936
current pthread id =139671212472080
current pthread id =139671201982224
current pthread id =139671191492368
hello in 4196496
hello in 4196496
hello in 4196496
hello in 4196496
hello in 4196496
是否發現了問題?對,i的值沒有輸出預想的結果,這是因為多執行緒造成的,主程序在i還未賦值時,執行緒已經開始跑啦!~
那麼下面**是正確的:
#include #include using namespace std;
#define num_threads 5
void* say_hello(void* args)
int main()
}for (int i = 0; i < num_threads; ++i)
pthread_join(tids[i], null);
}
編譯、執行:(源程式去掉了列印執行緒id的廢話)
[cpp@node2 pthread]$ ./ex_create_args_ok
hello in thread 3
hello in thread 4
hello in thread 2
hello in thread 1
hello in thread 0
c c 多執行緒程式設計基礎講解(一)
利用幾篇文章簡單記錄下c與c 多執行緒程式設計基礎入門的東西,每篇乙個程式來記錄,備忘。這些章節是由淺入深組織的!在注釋中講吧,佛樓公尺!cpp view plain copy include include 標頭檔案是必須的,符合posix標準使程式可移植眾多平台 using namespace ...
c c 多執行緒程式設計基礎講解(四)
經過前面的幾個例子,是不是還少個執行緒建立時屬性引數沒有提到,見下文示例 cpp view plain copy include include include include using namespace std define num threads 5 void say hello void ...
c c 多執行緒程式設計基礎講解(一)
利用幾篇文章簡單記錄下c與c 多執行緒程式設計基礎入門的東西,每篇乙個程式來記錄,備忘。這些章節是由淺入深組織的,賴死狗!在注釋中講吧,佛樓公尺!cpp view plain copy include include 標頭檔案是必須的,符合posix標準使程式可移植眾多平台 using namesp...