繁体   English   中英

几个核心写在一个文件中?

[英]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()到另一个流上,您需要执行myfile << core_stream[i].rdbuf() =读取缓冲区

您是否考虑过使用ZMQ管道? 您的模拟线程可以写入ZMQ_PUSH套接字(请参阅zmq_socket(3) ),无论写入文件(另一个线程或进程,ZMQ不关心)都可以从ZMQ_PULL套接字读取。 这样,您的模拟线程可能会在不将结果存储在内存中的情况下完成任何阻塞IO。 我无法想象这些天在分布式计算项目上工作而不使用ZMQ。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM