繁体   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