我有一个在操作系统课程的考试科目中发现的小程序。
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;
}
当我运行它时,我得到以下结果(每个数字后都有一个新行):
第一次运行:0 0
第二次运行:1 0 2 2
第三次运行:0 1 1
为什么当我只创建 3 个线程时它会打印 4 个数字。它如何打印重复项?
代码在 Ubuntu 中使用 gcc 编译。