背景:sqlite3数据库的读取,写入,查找,删除等操作以库的形式给出
写两个进程模拟多进程访问数据库文件导致的错误,最后给出解决方法
关于libdata.so和database.h头文件
database.h只是申明了一个虚基类,database_impl.h和database_impl.cpp继承了database类,并进行了具体实现。
我们将database_impl.h和database_impl.cpp文件编译成libdatabase.so库文件。
别人在使用的时候,只需要用到libdatabase.so库文件和database.h就可以访问我们设计的API了
给出两个进程访问sqlite3数据库文件的操作
process1.cpp
#include <iostream>
#include <vector>
#include <unistd.h>
#include <memory>
#include "common.h"
#include "database.h"
using namespace std;
using namespace ara::per;
class Oper
{
public:
Oper();
~Oper();
void CreateDBTable();
void InsertOneRecord(const int i);
private:
std::shared_ptr<DatabaseInterface> sp_db = nullptr;
};
Oper::Oper()
{
sp_db = DatabaseInterface::get_instance();
sp_db