多个内核写入单个文件
Several cores writing in a single file?
我一直在编写一个多线程模拟,将输出存储在文件中。到目前为止,我从一开始就将一个文件分配给核心(带有ofstream myfiles[NUMBER_OF_CORES]
),但它有点混乱,因为我正在使用几台具有 20+ 内核的计算机。我一直在这样做以避免在使用一个文件时覆盖,但是我可以在每个核心使用类似流之类的东西,最后使用类似的东西:
for(int i =0; i < NUMBER_OF_CORES; i++){
myfile << CORE_STREAM[i];
}
从CORE_STREAM[NUMBER_OF_CORES]
数组开始?我从未以这种方式操作过流。如果存在,我应该从哪个类构造它?
您可以使用
ostringstream
将中间结果存储在内存中。与ofstream
一样,它实现了ostream
接口,因此您现有的代码可能会按原样工作。
要将一个流转储到另一个流上,您需要执行myfile << core_stream[i].rdbuf()
. = 读取缓冲区
您是否考虑过使用 ZMQ 管道? 您的模拟线程可以写入ZMQ_PUSH套接字(参见zmq_socket(3)),并且写入文件的任何内容(另一个线程或进程,ZMQ 不在乎)都可以从ZMQ_PULL套接字读取。 这样,模拟线程就有可能摆脱执行任何阻塞 IO 的操作,而不会在内存中暂存结果。 我无法想象现在在分布式计算项目上工作而不使用 ZMQ。
相关文章:
- 如何将"cout"、"cerr"、"stdout"和"stderr"从C++程序定向到单个文件
- C Visual Studio代码不使用工作区中的单个文件夹编译
- 从存储库读取单个文件时出现问题
- 获取单个文件的 Clang AST
- 无法在 Netbeans 中编译单个C++文件,但能够生成完整的项目
- g++在多个文件上比使用谷歌模拟的单片单个文件慢得多
- 在 netbeans 中编译项目中的单个文件
- 从许多并行可执行文件写入单个文件的最佳方法
- 覆盖单个文件的编译标志
- 多个内核写入单个文件
- 如何使用Python绑定到Clang来解析单个文件
- C++类,使用具有不同用户的单个文件
- 确定何时更改单个文件
- Qt 5.2.0 生成单个 .o 文件
- 如何在代码折叠之外的单个文件中管理长代码
- Cmake用于具有单个.h文件的库
- 如何检测单个文件的文件系统大小限制
- 分叉服务器,单个文件 - r/w 访问
- 接受单个文件或单个目录的 QFileDialog
- 单个文件代码中未定义的引用错误