Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 函数sqlite3\u changes是线程安全的吗?_C++_Sqlite - Fatal编程技术网

C++ 函数sqlite3\u changes是线程安全的吗?

C++ 函数sqlite3\u changes是线程安全的吗?,c++,sqlite,C++,Sqlite,我正在多线程应用程序中使用sqlite3数据库。(库已正确编译并设置为线程安全模式) 在执行了一条类似于insert into table1的语句后,我想检查该语句是否在table1中插入了一些行 在这两种情况下,执行sqlite3\u step()将返回SQLITE\u DONE 查看sqlite3_changes()函数的描述,它正好符合我的需要,在它的描述中有两个令人烦恼的问题: 它不适用于语句,而是适用于我在所有线程中使用的数据库连接 根据功能描述,它似乎不是线程安全的: 如果在运行sq

我正在多线程应用程序中使用sqlite3数据库。(库已正确编译并设置为线程安全模式)

在执行了一条类似于insert into table1的语句后,我想检查该语句是否在table1中插入了一些行

在这两种情况下,执行
sqlite3\u step()
将返回
SQLITE\u DONE

查看sqlite3_changes()函数的描述,它正好符合我的需要,在它的描述中有两个令人烦恼的问题:

  • 它不适用于语句,而是适用于我在所有线程中使用的数据库连接

  • 根据功能描述,它似乎不是线程安全的:

  • 如果在运行sqlite3_changes()时,单独的线程对同一数据库连接进行更改,则返回的值不可预测且没有意义


    那么,这个函数是否线程安全?有没有一种方法可以在语句的基础上而不是在连接的基础上获取插入的行数?

    使用来自多个线程的相同连接不会使数据库崩溃,但会破坏事务。为什么不使用单独锁定或多个连接?@CL。我不知道你的真正意思。根据我的经验,它在多线程情况下表现得非常好。使用多线程的同一连接不会使数据库崩溃,但会破坏您的事务。为什么不使用单独锁定或多个连接?@CL。我不知道你的真正意思。根据我的经验,它在多线程中表现得非常好。