我有一个文件每秒更新一次,我追加它的一些行结束,另一个线程每次都读取它。所以我有两个指向这个文件的指针用于这些工作。可能吗? (我使用两个而(1)用于更新和读取两个函数)
感谢。
答案 0 :(得分:1)
以下是使用多个帖子阅读单个文件的好例子:Mutlitple thread reading a single file 你可以从这里开始。
就像说@MatsPetersson一样,你必须非常确定你在每个线程中做了什么。如果您不想读取不完整的数据,则需要确保其他线程没有写入文件。有几种方法可以使用,例如Mutex
或Signal
或Shared Memory Segment of a bool
。
我认为在你的情况下,即使它不明确,你需要只在没有其他线程正在写时才读,为此我会建议使用Mutex
。这是文档:Mutex function documentation。
所以我们有readThread
和writeThread
。这是一个关于如何处理问题的伪代码:
main(){
putTheMutexTo(1);
}
readThread(){
consumeMutex(1);
openTheFile();
readTheFile();
closeTheFile();
loadMutex(1);
}
writeThread(){
consumeMutex(1);
openTheFile();
writeTheFile();
closeTheFile();
loadMutex(1);
}
但是如果你真的不知道Mutex
是如何工作的,那么现在不要去代码和go read some doc on the Internet,因为这有点复杂你开始吧。