IOS中的Sqlite3并发问题
我在iOS应用程序中使用SQLite 3。它需要大量的读/写操作,其中许多操作是同时进行的。这些函数中的大多数都在不同的线程中运行,但是访问相同的数据库 以下是我想到的几种方法:IOS中的Sqlite3并发问题,ios,sqlite,Ios,Sqlite,我在iOS应用程序中使用SQLite 3。它需要大量的读/写操作,其中许多操作是同时进行的。这些函数中的大多数都在不同的线程中运行,但是访问相同的数据库 以下是我想到的几种方法: 在每次数据库访问(读/写)时,我都会将一个标志设置为database\u open=YES,如果它为真,我会在几秒钟后重试。我可以把函数放在数据库层本身 在同一线程中运行所有数据库操作。然而,我的用例是这样的,我需要等待一些HTTP调用完成并将检索到的数据存储到SQLite中。对于这个方法,我必须使所有这些服务器调用也
database\u open=YES
,如果它为真,我会在几秒钟后重试。我可以把函数放在数据库层本身如果我想的方向不对,请提出建议。SQLite。只需配置SQLITE_CONFIG_多线程模式,并分别从每个线程打开数据库。offtopic:您应该试一试。FMDB是线程保存的,并且有一个非常简单的SQL语句接口。或者,更准确地说,您可以使用FMDB的
FMDatabaseQueue
,作为一种机制,通过拥有一个单独的串行队列来协调来自不同线程的数据库交互,这两个线程将调度任何数据库交互。即使您不使用FMDB,您也可以使用此模式来协调来自不同线程的数据库交互,拥有自己的串行队列,您将向其中分派所有这些交互。谢谢各位。这似乎解决了我的问题。我读了他们的FMDatabaseQueue,它正是我所需要的