答案 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()接口 在多线程模式和开始时间和运行时模式之前 选择等等无法区分多线程和 序列化模式也无法报告启动时或运行时模式 变化。