Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
146 views
in Technique[技术] by (71.8m points)

corrupt data - Multiple objects reading and writing to file in C++ in Linux

I am developing an C++ application, in Linux environment, that has a class that reads and writes some configuration parameters in a file (JSON format preferentially). This class has many objects instantiated and I noticed that sometimes my file gets corrupted when the writeFile() and loadFile() are called at the same time from different instances.

For example, this is a part of my class (FileClass)

class FileClass
{
    private:
        static bool isInUse;
        std::string fileName;
        std::string fileContents;
    public:
        FileClass(std::string fileName);
        void writeFile();
        void readFile();
};

Initially, I was thinking in creating a queue that process all pending writeFile() and readFile() requests in a separated thread. However, I tried simply to add a static flag (i.e., isInUse) to be always set true when the writeFile or readFile functions are called and when these functions succeed this flag is set as false.

I noticed that, in the Linux, my file still gets corrupted intermittently. What is the best way to have many objects of the FileClass in my application and to prevent reading and writing to the file at the same time?

question from:https://stackoverflow.com/questions/65903252/multiple-objects-reading-and-writing-to-file-in-c-in-linux

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...