Sep*_*ram 9 c++ compiler-construction stl copy-on-write
我刚刚阅读了一篇关于写时复制的维基百科文章(如果有任何支持它的文件系统很好奇),并对以下段落感到惊讶:
COW也在内核之外,库,应用程序和系统代码中使用.例如,C++标准库提供的字符串类是专门为允许写时复制实现而设计的:
std::string x("Hello");
std::string y = x; // x and y use the same buffer
y += ", World!"; // now y uses a different buffer
// x still uses the same old buffer
Run Code Online (Sandbox Code Playgroud)
我不知道STL中是否支持copy-on-write.真的吗?它是否适用于其他STL类,例如std::vector或std::array?哪些编译器支持该优化(特别是,我想知道G ++,英特尔C++编译器和Microsoft C++编译器)?
例如,C++标准库提供的字符串类是专门为允许写时复制实现而设计的
那是半真半假的.是的,它开始考虑COW的设计.但是在匆忙中,std :: string的公共接口搞砸了.导致它变得厌恶COW.这些问题是在标准出版后发现的,从那以后我们就一直坚持下去.因为目前std::string无法进行线程安全COW,并且野外实现不会这样做.
如果你想要一个使用COW的字符串,从另一个库中获取它,比如MFC/ATL中的CString.
| 归档时间: |
|
| 查看次数: |
5943 次 |
| 最近记录: |