2

正如标题所述:是否可以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);
};

如您所见,这是一个正在另一个线程上执行的块。

4

2 回答 2

2

我向您推荐 sqlite3 常见问题解答

SQLite 线程安全吗?

线程是邪恶的。避开他们。

SQLite 是线程安全的。我们做出这个让步是因为许多用户选择忽略上一段中给出的建议。但是为了线程安全,SQLite 必须在 SQLITE_THREADSAFE 预处理器宏设置为 1 的情况下进行编译。分发中的 Windows 和 Linux 预编译的二进制文件都是以这种方式编译的。等等等等等等

所以我会说“是”,应该没问题。

于 2013-09-03T09:10:28.867 回答
1

答案是“也许是,也许不是”。

我建议您阅读有关线程安全的 SQLite 常见问题解答条目,并检查您的其余代码和您链接的 sqlite3 库。

于 2013-09-03T09:09:20.270 回答