【发布时间】:2012-07-03 11:50:10
【问题描述】:
我正在尝试编写一个多线程(使用 NSOperationQueues 进行写入并在主线程上执行读取)应用程序来访问 sqlite 数据库数据。我知道 sqlite 默认不是线程安全的,但我们添加了多线程预处理器宏并将我们的日志模式设置为 wal。
根据这个 sqlite 文档:http://www.sqlite.org/faq.html#q6 看来我们需要在编写任何内容之前完成所有准备好的语句。这是真的?有没有办法避免这种情况?如果我们对同一个数据库有两个句柄怎么办?
基本上,我们希望一次进行多次读取和一次写入,但正在尝试找出最佳方法。
提前致谢。
【问题讨论】:
-
所以要么完成这件事并进行马马虎虎的线程化,要么不完成并冒着双重或更多线程访问资源的风险(一个巨大的禁忌)?
-
我们的第二个线程(使用 nsoperationqueue)只会访问写入...所有读取都在主线程上,因此它们不会共享资源
-
好吧,我想解决这个问题的唯一方法就是自己尝试一下。 iOS 类似于 UNIX,所以我想知道他们的建议到底能走多远……+1
-
它可能一开始可以工作,但不幸的是很难测试多线程来重现任何错误 =(
标签: objective-c ios sqlite