Synchronization getchar()如何与stdio流同步?

Synchronization getchar()如何与stdio流同步?,synchronization,posix,getchar,Synchronization,Posix,Getchar,根据getchar的功能,当stdio流缓冲区为空时,需要阻止它。这种阻塞功能是如何实现的 据说,出于性能原因,getchar/getc可以实现为宏直接汇编,在这种情况下如何确保阻塞功能 阻塞负责操作系统内核。如果操作无法实现,那么内核将进程放入一个等待队列,这使得它不合格,直到检测到相应的事件(至少有一个字符可用于输入) 作为宏实现与阻塞无关。这只是意味着它不是一个函数,你不能得到它的地址。注意:宏并不意味着直接汇编,它意味着C宏,类似于: #define getchar(void) fget

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


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

阻塞负责操作系统内核。如果操作无法实现,那么内核将进程放入一个等待队列,这使得它不合格,直到检测到相应的事件(至少有一个字符可用于输入)

作为宏实现与阻塞无关。这只是意味着它不是一个函数,你不能得到它的地址。注意:宏并不意味着直接汇编,它意味着C宏,类似于:

#define getchar(void) fgetc(stdin)