组合读写文件I / O类

时间:2014-05-14 14:28:52

标签: c++ thread-safety mutex fstream

在我的一个项目中,我创建了处理文件I / O的类。我有一个FileReader和一个FileWriter。 FileReader可以从文件中读取数据,FileWriter可以将数据写入文件。我的项目中引入了一个新类,它需要能够在同一个文件中读写。对于这个类,我需要结合FileReader和FileWriter类。

#include "Read.h"
#include "Write.h"

class ReadWrite : public Read, public Write
{

};

通过这种方法,可以同时进行读写。据我所知,你不能同时读写。我唯一的解决方案是创建代理类:

#include "Read.h"
#include "Write.h"

#include <mutex>

class ReadWrite : private Read, private Write
{
private:
    std::mutex lock;

public:

    int readData() {
        std::lock_guard<mutex> guard(lock);
        return readX();
    }

    void writeData(int x) {
        std::lock_guard<mutex> guard(lock);
        writeX(x);
    }
};

还有其他解决方案可以解决这个问题吗?此解决方案的问题是readX和writeX不需要完全同步。如何设计一个具有单独的读,写和读写类的文件I / O系统,而不会产生太多的同步开销。

0 个答案:

没有答案