15得票5回答
调用ToString之后,StringBuilder是否会变成不可变的?

我清楚地记得在.NET早期的日子里,调用StringBuilder的ToString方法会将新字符串对象(要返回的)与StringBuilder使用的内部字符缓冲区连接起来。这样,如果你使用StringBuilder构建一个巨大的字符串,调用ToString方法就不需要复制它。 为了做到这一...

7得票1回答
更高效地使用fork()和写时复制内存共享

我是一名开发多人在线游戏的程序员,使用基于Linux的服务器。我们为世界使用“实例化”架构。这意味着进入某个世界区域的每个玩家都会得到该区域的副本与其队友一起玩,并独立于所有其他玩家在同一区域中玩耍。 在内部,我们为每个实例使用一个单独的进程。最初,每个实例进程将启动,仅加载所需的资源,生成...

10得票1回答
macOS APFS:终端中的写时复制

我正在编写一些小脚本,将备份数据组装到一个目录中。然后,目录内容将上传到云服务,并在此之后删除。我想知道如何在终端中使用像cp这样的命令利用APFS的写时复制功能。Finder做得很好。但是如果我运行cp Largefile LargeFileCopy,它会花费很长时间来复制文件,并相应地使用...

11得票2回答
fork()中的写时复制是如何工作的?

我希望知道fork()中如何发生写时复制。 假设我们有一个拥有动态整型数组的进程A: int *array = malloc(1000000*sizeof(int)); 数组中的元素被初始化为一些有意义的值。 然后,我们使用fork()函数创建一个子进程,即B。 B将迭代数组并进行一些...

10得票2回答
为什么子进程和父进程的变量地址相同?

这是我的代码int main() { pid_t pid; int y = 3; if ( (pid = fork()) <0 ) return -1;; if( pid == 0 ) /* child */ { printf(" before:...

18得票2回答
使用shared_ptr的写时复制技术

我有一个简单的cow_ptr,它看起来像这样: template<class T, class Base=std::shared_ptr<T const>> struct cow_ptr:private Base{ using Base::operator*; ...

15得票1回答
Python多进程在OSX和Ubuntu上的“写时复制”行为不同

我正在尝试在Python中在父进程和子进程之间共享对象。为了玩弄这个想法,我创建了一个简单的Python脚本:from multiprocessing import Process from os import getpid import psutil shared = list(rang...

8得票2回答
共享内存和写时复制,或者右值引用和移动语义?

通用容器(如Qt中的容器)的共享内存/写时复制实现是否被C++11的移动语义和右值引用所取代? 它们各自的优缺点是什么?还是说它们相辅相成而非互斥?

8得票3回答
纯函数式数据结构和写时复制?

我希望能够拥有函数式数据结构的优势(多个版本共享结构),但又能以命令式样式进行修改。 我考虑的方案(和一个可能的用途)是:一个RPG游戏,整个游戏历史都被存储下来(例如,为了允许时间倒流)。使用写时复制技术,我可以简单地克隆保存游戏状态的结构,并通过引入新的回合来修改它。但同时还可以访问早期...

188得票9回答
什么是写时复制?

我想知道写时复制是什么以及它的用途。这个术语在Sun JDK教程中被提到了多次。