簡體   English   中英

緩沖到硬盤

[英]Buffering to the hard disk

我收到了固定費率的大量數據。 我需要在不同的線程上對這些數據進行一些處理,但這可能比數據進入的速度慢,所以我需要緩沖數據。 由於可用RAM中的數據量很快就會耗盡,因此需要溢出到硬盤上。 我可以做的是像文件系統支持的管道,所以編寫器可能被文件系統阻止,但不是由讀取器運行太慢。

這是一套粗略的要求:

  • 讀取器運行速度太慢不應阻止寫入。
  • 如果數據讀取速度足夠慢以至於可用RAM耗盡,則它應該溢出到文件系統。 寫入磁盤可以阻止。
  • 如果沒有數據可用,則讀取應該阻止,除非編寫器關閉了流。
  • 如果讀者能夠跟上數據,那么它永遠不會打到硬盤上,因為RAM緩沖區就足夠了(不錯但不是必需的)。
  • 磁盤空間應該在數據被消耗時(或不久之后)恢復。

Windows中是否存在這樣的機制?

這看起來像一個經典的消息隊列。 您是否考慮過MSMQ或類似問題? MSMQ擁有您要求的所有屬性。 您可能希望使用直接尋址來避免Active Directory http://msdn.microsoft.com/en-us/library/ms700996(v=vs.85).aspx並使用本地或TCP / IP隊列地址。

使用實際文件。 在接收到數據時寫入文件,在另一個進程中從文件中讀取數據並進行處理。

您甚至可以獲得無多線程的額外好處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM