我正在使用无限运行的线程函数测试在 C 中运行并发线程的行为。我的问题是为什么在下面的代码中没有“HELLO!!!” 被打印?我认为 pthread_create() 被调用,然后立即进入循环的下一次迭代,为什么代码要等待第一个 pthread_create() 完成?多个线程不应该同时运行吗?
void main(int argc, char **argv)
{
pthread_t tid;
int i;
//Create 4 inf threads
for (i=0;i< 4;i++)
{
//printf("hello!\n");
//pthread_create(&tid, NULL, thread_incr, (void *)i);
pthread_create(&tid, NULL, t_nostop, (void *)i);
printf("HELLO!!!"); //This linen is NEVER printed!!
}
pthread_exit(NULL);
}
void* t_nostop(void * argp)
{
int i=1;
int t_num=(int) argp;
while(i==1){t_num++;}
}