多次運行以下代碼會在同一個數字出現多次時產生輸出。我不確定這是爲什麼。爲什麼此代碼多次輸出相同的數字?
#include <iostream>
#include <pthread.h>
using namespace std;
const int NUM_THREADS = 5;
void* thread_entry(void *i){
cout<<(long)i<<endl;
}
int main() {
pthread_t threads[NUM_THREADS];
long i;
for(i=0;i<NUM_THREADS;i++){
pthread_create(&threads[i],NULL,&thread_entry,(void *)i);
}
return 0;
}
它編譯g++ -std=c++11 main.cpp -lpthread
。
輸出:
$ ./a.out
0
1
4
$ ./a.out
014
14
23
$ ./a.out
02
2
3
您是否考慮加入您的主題? –
你需要加入你的線程,並且你需要一個互斥體或類似的來保護你的輸出到cout,而且目前是交錯的值。你可能也想考慮使用std :: thread。 –
我沒有看到如何等待他們的終止會改變他們的輸出 – Adam