哪个线程模式是Sqlite for iOS编译的?

时间:2012-01-15 18:37:07

标签: ios multithreading sqlite ios5

页面http://www.sqlite.org/threadsafe.html提及:

  • 单螺纹
  • 多线程
  • 序列化

哪种模式是在iOS 5中集成的sqlite?

3 个答案:

答案 0 :(得分:6)

好的,所以sqlite3_threadsafe()返回2,所以它在iOS上用SQLITE_CONFIG_MULTITHREAD编译。这很不幸,我本来喜欢序列化。

sqlite3_config(SQLITE_CONFIG_SERIALIZED)遗憾地给了我SQLITE_MISUSE

答案 1 :(得分:3)

根据这个答案 - https://stackoverflow.com/a/7799021/40444

您似乎可以执行以下操作:

sqlite3_shutdown();
if (sqlite3_config(SQLITE_CONFIG_SERIALIZED) == SQLITE_OK) {
    NSLog(@"sqlite configured to be threadsafe);
}
sqlite3_initialize();

然而,目前还不清楚这是否正式起作用。

答案 2 :(得分:0)

答案是多线程。 我们可以使用sqlite3_threadsafe()来检查,它返回2.

0 - Single-thread
2 - Multi-thread
1 - Serialized
问:@Ben Marten "遗憾的是,日志记录sqlite3_threadsafe()没有显示任何内容  设置应用后的差异......"

答:sqlite3_threadsafe()仅报告编译时互斥设置  [SQLITE_THREADSAFE]标志。

  

确定sqlite3_threadsafe()接口的返回值   通过编译时线程模式选择。如果是单线程模式   在编译时选择,然后sqlite3_threadsafe()返回false。如果   然后选择多线程或序列化模式   sqlite3_threadsafe()返回true。 sqlite3_threadsafe()接口   在多线程模式和开始时间和运行时模式之前   选择等等无法区分多线程和   序列化模式也无法报告启动时或运行时模式   变化。