我需要使文件表现为循环缓冲区。从一个线程我必须写数据。从我从文件中读取的另一个线程。但是文件的大小是固定的。
有什么想法吗?
答案 0 :(得分:0)
由于你没有提到你将使用的语言,我只能为你提供一个通用的答案:写一个抽象,当读过文件的末尾时,寻找到文件的开头并恢复在那里阅读。
请注意,从多个线程写入和读取文件需要正确同步。
答案 1 :(得分:0)
我假设一个线程知道另一个线程的位置。在这种情况下,编写者可以附加到文件并增加其位置,直到它到达MAXSIZE
。然后它应该通过寻找位置0并且只要其位置小于读取器的位置继续覆盖旧内容来回绕,之后它必须阻塞。同时,读者可以在必要时阅读和包装,直到达到作者的位置。
换句话说,它与内存缓冲区中的标准循环没有太大区别。您确定在您的情况下使用文件是否必要?您也可以考虑对producer-consumer problem进行一些研究。
答案 2 :(得分:0)
您还可以考虑使用命名管道。