首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许C++和C流独立缓冲的潜在好处是什么?

允许C++和C流独立缓冲的潜在好处是什么?
EN

Stack Overflow用户
提问于 2016-12-27 19:39:54
回答 1查看 226关注 0票数 5

C++ iostreams提供了对C++流是否必须通过std::ios_base::sync_with_stdio()与C流同步的控制。关闭流同步允许标准库实现对C++流和C流使用独立的非同步缓冲区,以提高性能。

为什么认为为C流和C++流使用独立的io缓冲区为实现者打开一扇门很重要?与一组io缓冲区相比,我看不出这是如何提高性能的。允许标准库在程序级别上使用一组io缓冲区可以减少对底层OS设施的通常代价高昂的调用,但是两组io缓冲区的优点是什么呢?

对于C流和C++流的单独缓冲区是否有技术上的原因可以提高性能,还是设计只是一个历史构件?

这是否与委员会希望C++实现者能够在现有C标准库实现的基础上实现C++标准库有关?

我要的不仅仅是“标准这么说”。

如果需要OS特性来解释理由,欢迎回答以实际OS提供的io设施为例,或者解释假设的、但合理的OS。

编辑:要澄清的是,问题不是为什么同步流会损害性能。问题是,为什么设计C++标准时假定可能有两组io缓冲区,为什么保留这种可能性对实现者很有用。std::ios_base::sync_with_stdio()恰好是这个假设的结果。

EN

回答 1

Stack Overflow用户

发布于 2016-12-27 20:08:28

与一些标准不同的是,C++标准和C标准一样,是用来描述已经存在的事物的行为。该标准的作者希望避免任何可能使设计一个符合标准的C++实现变得困难的事情,因为该平台和该平台的早期标准前实现一样能够工作。

如果有一些实现的C++流支持一些标准没有强制要求的特定于平台的额外功能,那么一个符合标准的C++实现可能不可能同时支持这些函数,同时也使用C的<stdio.h>包中相同的缓冲结构。对于标准的作者来说,可能不可能避免要求实现不能支持这种增强的语义,或者允许它们独立于<stdio.h>的流进行缓冲。考虑到无论标准是否需要,任何特定的实现都不能保证两个库的流使用相同的缓冲区,如果存在更强的需求会有任何有用的实现特性的可能性,后一种选择是有意义的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41351213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档