getchar()如何与stdio流同步?

时间:2017-05-05 06:00:26

标签: synchronization posix getchar

根据getchar()的功能,当stdio流缓冲区为空时需要阻止它。这个阻止功能是如何实现的?

据说由于性能原因,getchar / getc可以实现为宏(直接汇编),在这种情况下如何确保阻塞功能。

1 个答案:

答案 0 :(得分:0)

阻止负责OS内核。如果无法实现操作,则内​​核将进程置于等待队列中,使其不符合条件,直到检测到相应的事件(至少有一个char可用于输入)。

以宏实现的

与阻止无关。这只是意味着它不是一个功能,你就可以获得它的地址。注意宏并不意味着直接汇编,它意味着C宏如下:

#define getchar(void) fgetc(stdin)