library routine called out of sequence是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/26 20:11:47
这个问题应该怎么解决呢?谢谢

库的例行调用超出序列

使用SQLite在并发操作数据库时出现的异常,应该可以利用加锁机制介入控制。

数据库被多个线程同时访问,可以在其中设置一个标志位,标志是在被哪个线程使用,再做相关操作。

官方有如下几种解释:
1.调用API所用到的指针,第一种情况是没有从sqlite3_open()或者是sqlite3_open16()获得,第二种情况是sqlite3_open()函数已经将数据库关闭了。
2. 两个或者更多的线程同时访问该数据库。对于这样的问题,可以通过加上锁进行解决。
3. sqlite3_step()所用到的变量statement指针,第一种情况是该指针不是从sqlite3_prepare()或者是sqlite3_open16()获得的,第二种情况是该指针已经被销毁或者被释放。这个和1中的情况是一样的,不同的是使用这种指针的函数,两者可以和为一种情况。
4. 试图将values绑定到一个正在运行的statement上。该解释未遇到。

意思是这个 library进程不在内存队列中(是CPU队列/就是一个待处理程序的队列)。
这种情况可能是由于进程的优先级问题引起的,或者是我们称为starvation的一种情况。

这个问题应该是多线程访问数据库 造成资源紧缺引起的