我编写了一个使用 sqlite3 的 .dll。它有一个插入函数,可以在数据库上执行插入。
我还有一个使用 dll 执行插入的测试可执行文件。现在我正在测试 sqlite 及其管理多个连接的能力。测试程序插入一个无限循环,伪代码如下:
while(1) {
openDb();
doInsert();
closeDb();
}
基本上我已经设置了它,以便我运行 4 个版本的测试应用程序,每个版本都在数据库中插入一个字母(a、b、c 或 d)。
现在,这不起作用,因为数据库几乎总是被锁定。它适用于一两个程序,但如果我运行所有 4 个程序就不行,就像我创建了一个大的竞争条件一样。
我查看了文档,并且遇到了此处指定的 SQLITE_OPEN_FULLMUTEX 之类的内容:http ://www.sqlite.org/c3ref/open.html
sqlite3 是否提供了一种机制来处理多个 exe 尝试一次写入同一个数据库?还是我只是在负载测试中过于努力地推动 sqlite?我需要编写自己的连接池吗?
在这个问题上的任何帮助都会很棒。谢谢。