正如标题所述:是否可以在另一个线程中运行方法sqlite3_exec()
?
TBXMLSuccessBlock sBlock = ^(TBXML *tbxmlDocument) {
xmlArray = [NSMutableArray array];
if (tbxmlDocument.rootXMLElement)
[self fillArrayWithXmlContents:tbxmlDocument.rootXMLElement];
for (int i = 0; i < xmlArray.Count; i++)
sqlite3_exec(db, "Query that uses xmlArray values", 0, 0, 0);
};
正如您所看到的,这是一个正在另一个线程上执行的块。
答案 0 :(得分:2)
我推荐你sqlite3 FAQ:
SQLite线程安全吗?
线程是邪恶的。避免它们。
SQLite是线程安全的。我们做出这种让步,因为许多用户选择 忽略前一段中给出的建议。但为了 要是线程安全的,SQLite必须使用SQLITE_THREADSAFE进行编译 预处理器宏设置为1. Windows和Linux都经过预编译 分发中的二进制文件以这种方式编译。 blah blah blah
所以我会说“是”,应该没问题。
答案 1 :(得分:1)
答案是“也许是,也许不是”。
我建议你阅读SQLite FAQ entry on thread-safety并查看你的其余代码和你链接的sqlite3库。