这是我的代码。这很简单。
#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
?3
为什么它没有打印1 3 2 0
或任何其他结果?