30-结束语
3.16 结束语
标准I/O是C标准库提供的一个用户缓冲库。虽然有些不足,它是一个功能强大且非常流行的解决方案。实际上,许多C程序员,除了采用标准I/O,对其他解决方案一无所知。当然,对于终端I/O,行缓冲是最理想的,而且标准I/O是它唯一的解决方式。谁会直接调用write()向标准输出写数据呢?
标准I/O(一般来说也包括用户缓冲)适用于下列情况:
- 很可能会发起多个系统调用,而你希望合并这些调用从而减少开销。
- 性能至关重要,你希望保证所有I/O操作都是以块大小执行,从而保证块对齐。
- 访问模式是基于字符或行,你希望通过接口可以简单地实现这种访问,但又不希望产生额外的系统调用。
- 和底层的Linux系统调用相比,更喜欢调用高层的接口。
然而,最大的灵活在于直接使用Linux系统调用。下一章,我们将学习高级I/O及其关联的系统调用。
[1] 通常,取消锁会带来各种问题。但有些程序可能会通过把所有I/O委托给单个线程的方式(即一种线程封闭方式),来实现线程安全策略。这样,就不必增加锁的开销。