我正以固定的速率接收大量数据。我需要在不同的线程上对这些数据进行处理,但是这可能比数据的到来速度慢,因此我需要缓冲数据。由于数据量很大,可用的RAM会很快耗尽,因此它需要溢出到硬盘上。我所需要的是一种类似于基于文件系统的管道的东西,使得写入者可以被文件系统阻塞,但读取者运行太慢时不能被阻塞。
下面是粗略的要求:
下面是粗略的要求:
- 写入不应该因为读取运行太慢而被阻塞。
- 如果数据读取得足够慢导致可用RAM耗尽,则应将其溢出到文件系统中。写入到磁盘上是可以被阻塞的。
- 除非写入者关闭了流,否则在没有可用数据时读取应该被阻塞。
- 如果读取者能够跟上数据,则它永远不会击中硬盘,因为RAM缓冲区将是足够的(很好但不是必要的)。
- 随着数据被消耗(或很快之后),应恢复磁盘空间。