FMDB.database.beginTransaction 和 FMDB.databaseQueue.inTransaction 之间的区别
Posted
技术标签:
【中文标题】FMDB.database.beginTransaction 和 FMDB.databaseQueue.inTransaction 之间的区别【英文标题】:Difference between FMDB.database.beginTransaction and FMDB.databaseQueue.inTransaction 【发布时间】:2014-09-15 02:32:33 【问题描述】:代码 A
FMDBDatabase *db = xxxxx
[db beginTransaction];
[db executeUpdate:xxxx];
xxxxxxx
代码 B
FMDBDatabaseQueue *queue = xxxxx
[queue inTransaction:^xxxxxx]
database.beginTransaction 和 databaseQueue.inTransaction 有什么区别? 正如我所看到的 inTransaction 只是将 sql 操作放入队列中,但 beginTransaction 似乎在 sqlite 级别做一些事情。哪一个是线程安全的更好选择,它们之间有什么区别?
【问题讨论】:
【参考方案1】:不同之处在于,后者除了具有更好的语法外,声明式语法在多线程应用程序中使用是相当安全的,尤其是在多个线程共享单个数据库连接的情况下。后者使用一次执行一个操作的 FIFO 队列。
【讨论】:
以上是关于FMDB.database.beginTransaction 和 FMDB.databaseQueue.inTransaction 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章