我以固定速率接收大量數據。我需要在不同的線程上對這些數據進行一些處理,但是這可能比數據進入時慢,所以我需要緩衝數據。由於進入可用RAM的數據量會很快耗盡,因此需要溢出到硬盤上。我所能做的事情就像是一個由文件系統支持的管道,所以作者可能被文件系統阻擋,但讀者的運行速度不會太慢。緩衝到硬盤
這裏有一個粗略的一系列要求:
- 寫作不應該被過於緩慢運行的讀者被阻止。
- 如果數據讀取速度慢到可用RAM耗盡,它應該溢出到文件系統。寫入磁盤以阻止是可以的。
- 如果沒有數據可用,讀取應該阻塞,除非流被作者關閉。
- 如果讀者能夠跟上數據,那麼它應該永遠不會碰到硬盤,因爲RAM緩衝區足夠了(很好但不是必需的)。
- 磁盤空間應該隨着數據消耗(或之後)而恢復。
在Windows中是否存在這樣的機制?
嘗試編寫沒有高速緩存的程序,並查看它是否與Windows內存管理器一起工作良好。 – 2014-09-25 17:08:10
隨着我們收到的數據量的增加,我們將會因爲太快而無法工作。由於我們被困在32位機器上,所以我們也將耗盡地址空間。 – spencercw 2014-09-25 17:29:40
嘗試使用Windows文件映射。它很好地管理從ram到hdd的數據交換,這裏是msdn站點:http://msdn.microsoft.com/en-us/library/windows/desktop/aa366556%28v=vs.85%29.aspx – Flocke 2014-09-25 17:41:13