同时追加和读取一个文件

append and read one file at same time

本文关键字:一个 文件 追加 读取      更新时间:2023-10-16

我有一个每秒钟更新一次的文件,我在它的末尾附加一些行,另一个线程每次都读取它。我有两个指针指向这个文件。这可能吗?(我在两个函数中使用两个while(1)来更新和读取)

谢谢。

下面是一个使用多个线程读取单个文件的好例子:多个线程读取单个文件你可以从这里开始。

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

我认为在您的情况下,即使它不显式,您需要仅在没有其他线程正在写时读取,要做到这一点,我会建议使用Mutex。这里是doc: Mutex函数的文档。

我们有readThreadwriteThread。下面是你如何处理这个问题的伪代码:

    main(){
         putTheMutexTo(1);
    }
    readThread(){
         consumeMutex(1);
         openTheFile();
         readTheFile();
         closeTheFile();
         loadMutex(1);
    }
    writeThread(){
         consumeMutex(1);
         openTheFile();
         writeTheFile();
         closeTheFile();
         loadMutex(1);
    }

但是如果你真的不知道Mutex是如何工作的,现在不要去写代码,去看看网上的一些文档,因为当你开始的时候,这有点复杂。

相关文章: