[多进程访问sqlite3 bug] 解决方法
Posted Overboom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[多进程访问sqlite3 bug] 解决方法相关的知识,希望对你有一定的参考价值。
背景: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
以上是关于[多进程访问sqlite3 bug] 解决方法的主要内容,如果未能解决你的问题,请参考以下文章
C#使用读写锁三句代码简单解决多线程并发写入文件时提示“文件正在由另一进程使用,因此该进程无法访问此文件”的问题
svn: Failed to run the WC DB work queue associated svn的bug解决