正在缓冲到硬盘

Buffering to the hard disk

本文关键字:硬盘 缓冲      更新时间:2023-10-16

我正在以固定速率接收大量数据。我需要在另一个线程上对这些数据进行一些处理,但这可能比数据输入的速度慢,所以我需要缓冲数据。由于可用RAM中的数据量会很快耗尽,因此需要溢出到硬盘上。我可以使用类似于文件系统备份管道的东西,这样写入程序可能会被文件系统阻塞,但不会被运行太慢的读取器阻塞。

以下是一组粗略的要求:

  • 写作不应该因为读者跑得太慢而受阻
  • 如果数据读取速度慢到可用RAM耗尽,那么它应该溢出到文件系统。可以阻止对磁盘的写入
  • 如果没有可用的数据,则应阻止读取,除非写入程序已关闭流
  • 如果读取器能够跟上数据,那么它就永远不应该碰到硬盘,因为RAM缓冲区就足够了(很好,但不是必不可少的)
  • 磁盘空间应该随着数据的消耗而恢复(或很快恢复)

Windows中是否存在这样的机制?

这看起来像一个经典的消息队列。你考虑过MSMQ或类似的吗?MSMQ具有您所要求的所有属性。您可能希望使用直接寻址来避开Active Directoryhttp://msdn.microsoft.com/en-us/library/ms700996(v=vs.85).aspx,并使用本地或TCP/IP队列地址。

使用实际文件。在收到数据时写入文件,在另一个过程中从文件中读取数据并进行处理

您甚至可以获得无多线程的额外好处。