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

时间:2010-09-18 13:38:17

标签: file circular-buffer

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

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

由于你没有提到你将使用的语言,我只能为你提供一个通用的答案:写一个抽象,当读过文件的末尾时,寻找到文件的开头并恢复在那里阅读。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您还可以考虑使用命名管道。