当前位置:嗨网首页>书籍在线阅读

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委托给单个线程的方式(即一种线程封闭方式),来实现线程安全策略。这样,就不必增加锁的开销。