簡體   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