关于并发的一个小例子,求解释,该如何解决
关于并发的一个小例子,求解释C/C++ code#includestdio.h#includeunistd.hvoid producer(){printf(son
关于并发的一个小例子,求解释
C/C++ code#include<stdio.h>#include<unistd.h>void producer(){ printf("son \n"); while(1){ }}void consumer(){ printf("father"); while(1){ }}int main(void){ pid_t pid; pid = fork(); if(pid == 0){ printf("father 1\n"); consumer(); }else{ printf("son 1\n"); producer(); } return 0;}
如上
结果是
son 1
son
father 1
好像没有运行consumer(),十分不解
[解决办法]死循环不是阻塞,会占用cpu时间
但你的原因是没有flush导致的
换成printf("father\n");
[解决办法]consumer没有打\n
所以标准输出没有刷新
[解决办法]1、你理解的是对的
2、没打印出来不是因为没有运行 consumer,是因为输出缓冲未刷新
你可以试下在 printf("father"); 后面加一句 fflush(stdout);
也可以试下把 printf("father"); 改成 printf("father\n");