主に次の部分を検討してください
tcount = 0;
for (i=0; i<2; i++) {
count[i] = 0;
if (pthread_create(&tid[i], NULL, randint, (void *)&i) != 0) {
exit(1);
} else {
printf("Created Thread %d\n", i);
}
// XXXXXXX
}
for (i=0; i<nthreads; i++) {
printf("Waiting for thread %d to terminate\n", i);
pthread_join(tid[i], NULL);
}
randint コードは次のとおりです。
void *randint(void *pint)
{
int j, k;
int rseed;
j = *((int *)pint);
printf("Started thread %d\n", j);
while (tcount++ < NMAX) {
count[j] += 1;
}
return(NULL);
}
出力は次のとおりです。
Created Thread 0
Created Thread 1
Waiting for thread 0 to terminate
Started thread 0
Started thread 0
Waiting for thread 1 to terminate
出力に次のようなものがある理由がわかりません。
Started thread 0
Started thread 0
私はそれがあったかどうかを理解しています:
Started thread 0
Started thread 1
または:
Started thread 1
Started thread 1
しかし、2つのゼロは明確ではありません!!! 推測は?