以循环缓冲区方式读取和写入文件

问题描述:

我需要使文件表现为循环缓冲区。从一个线程我必须写数据。从另一个线程我已经从文件中读取。但是文件的大小是固定的。以循环缓冲区方式读取和写入文件

有什么想法?

由于您没有提及您将使用的语言,因此我只能为您提供一般答案:编写一个抽象,当读取文件末尾时,会寻找文件的开头,恢复阅读。

请注意,从多个线程写入和读取文件需要正确的同步。

我假设一个线程知道另一个线程的位置。在这种情况下,作者可以附加到文件并增加其位置,直到它到达MAXSIZE。然后,它应该回避寻找位置0,并继续覆盖旧内容,只要其位置小于阅读器的位置,然后它必须阻止。同时,读者可以在必要时阅读和包装,直到达到作者的位置。

换句话说,它与内存缓冲区中的标准循环没有多大区别。你确定在你的情况下使用文件是必要的吗?你也可以考虑对producer-consumer problem进行一些研究。

你也可以考虑使用命名管道。