目前我正在学习操作系统和我运行下面的代码:简单的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