これは私のコードです。とても簡単です。
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *func(void *arg)
{
printf("ID=%d\n", *(int*)arg);
pthread_exit(NULL);
}
int main()
{
pthread_t pt[4];
int i;
for (i = 0; i < 4; i++)
{
int temp = i;
pthread_create(&pt[i], NULL, func, (void*)&temp);
}
sleep(1);
return 0;
}
私はそれをコンパイルしました:
gcc p_test.c -lpthread
私はそれを実行しました。印刷し2 2 3 3
ました。もう一度実行しました。印刷し2 3 3 2
ました。
私の問題は:
なぜ2回印刷されたのです2
か?3
1 3 2 0
印刷またはその他の結果が表示されなかったのはなぜですか?