同时追加并读取一个文件

时间:2014-07-09 08:45:03

标签: c++ c

我有一个文件每秒更新一次,我追加它的一些行结束,另一个线程每次都读取它。所以我有两个指向这个文件的指针用于这些工作。可能吗? (我使用两个而(1)用于更新和读取两个函数)

感谢。

1 个答案:

答案 0 :(得分:1)

以下是使用多个帖子阅读单个文件的好例子:Mutlitple thread reading a single file 你可以从这里开始。

就像说@MatsPetersson一样,你必须非常确定你在每个线程中做了什么。如果您不想读取不完整的数据,则需要确保其他线程没有写入文件。有几种方法可以使用,例如MutexSignalShared Memory Segment of a bool

我认为在你的情况下,即使它不明确,你需要只在没有其他线程正在写时才读,为此我会建议使用Mutex。这是文档:Mutex function documentation

所以我们有readThreadwriteThread。这是一个关于如何处理问题的伪代码:

    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,因为这有点复杂你开始吧。