目前我正在學習操作系統和我運行下面的代碼:簡單的C++並行線程程序的輸出不匹配預期
#include<iostream>
#include<pthread.h>
using namespace std;
#define Num_Threads 4
void *hello (void *arg){
int* p = (int *)arg;
cout << *p << endl;
return 0;
}
int main(){
int i = 0;
pthread_t tid[Num_Threads];
for (i = 0; i < Num_Threads; i++){
pthread_create(&tid[i], nullptr, hello, &i);
}
for (i = 0; i < Num_Threads; i++){
pthread_join(tid[i], nullptr);
}
return 0;
}
我MAXOS使用下列編譯命令:
g++ pThead.cpp -pthread -o test
./test
我期待這個程序隨機輸出0,1,2,3的排列,但它通常有一些輸出,如3,0,0,0; 3,1,0,0等。我是初學者多線程,所以這個問題可能看起來很天真,但我很感激,如果有人能回答它。
是否有一個原因,你不能使用'C++ 11'和新標準''頭? –
Galik