OS コースの試験科目で見つけたこの小さなプログラムがあります。
void * func (void * p) {
int n = p;
printf("%d \n",n);
return NULL;
}
int main() {
int i;
pthread_t t[3];
for(i=0; i<3; i+=1)
pthread_create(&t[i] ,NULL, func, (void*)i);
return 0;
}
実行すると、次の結果が得られます (各桁の後に新しい行があります)。
1回目:0 0
2回目:1 0 2 2
3回目:0 1 1
スレッドを 3 つしか作成しないのに 4 桁が出力されるのはなぜですか。また、どうすれば複製を印刷できますか?
コードは Ubuntu の gcc でコンパイルされます。