2011-02-01 69 views

回答

3

getc调用的锁提供了对stdio FILE对象的应用程序级锁定,以允许同一应用程序中的多个线程对同一FILE对象进行线程安全访问。因此,每次读取字符时需要获取,,而不仅仅是在补充缓冲区时。

但是,如果您不是从多个线程访问文件,则永远不必等待锁定。如果获取/释放锁的开销过大(测量此;不要只假设),您还可以选择使用flockfilefunlockfile手动锁定/解锁,然后使用getc_unlocked

+0

没有任何理由使用`flockfile`和`funlockfile`,除非你有多个线程试图访问相同的`FILE`(这几乎肯定是一个错误,除非它像打印文本那样输出一整行时间)。 – 2011-02-01 05:33:58