在我的一个项目中,我创建了处理文件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系统,而不会产生太多的同步开销。