Multithreading 当我输入一个字符时,主线程和子线程都返回?
//请参阅thd代码。为什么子级将执行和处理,c=NULLMultithreading 当我输入一个字符时,主线程和子线程都返回?,multithreading,getchar,Multithreading,Getchar,//请参阅thd代码。为什么子级将执行和处理,c=NULL void* process(void* arg){ char c = getchar(); printf("process,c = %c\n",c); } int main() { pthread_t tid; pthread_create(&tid,NULL,process,NULL); char c = getchar(); printf("main,c = %c\n",c); pthread_j
void* process(void* arg){
char c = getchar();
printf("process,c = %c\n",c);
}
int main()
{
pthread_t tid;
pthread_create(&tid,NULL,process,NULL);
char c = getchar();
printf("main,c = %c\n",c);
pthread_join(tid,NULL);
printf("over\n");
return 0;
}
//main,c有值,process,c没有值
getchar()
只返回输入的每个字符一次。有两个线程都调用getchar()
。当一个字符到达时,其中一个返回该字符,而另一个线程等待下一个字符。我认为你错了,也许你可以运行我的代码,当我测试上面的演示时,我发现我认为我运行了你的代码是错的。我没有看到任何空值。在我的两个测试中,主线程获得第一个输入字符,线程读取第二个字符。不过,我想也可以再订一份。