首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FMDB.database.beginTransaction与FMDB.databaseQueue.inTransaction的区别

FMDB.database.beginTransaction与FMDB.databaseQueue.inTransaction的区别
EN

Stack Overflow用户
提问于 2014-09-15 10:32:34
回答 1查看 418关注 0票数 3

代码A

代码语言:javascript
复制
FMDBDatabase *db = xxxxx
[db beginTransaction];
[db executeUpdate:xxxx];
xxxxxxx

代码B

代码语言:javascript
复制
FMDBDatabaseQueue *queue = xxxxx
[queue inTransaction:^{xxxxxx}]

database.beginTransaction和databaseQueue.inTransaction有什么区别?正如我所看到的,inTransaction只是将sql操作放入队列中,但beginTransaction似乎在sqlite级别做了一些事情。哪一个是线程安全的更好的选择,它们之间的区别是什么?

EN

回答 1

Stack Overflow用户

发布于 2014-09-15 10:45:26

不同之处在于,后者除了具有更好的声明性语法外,在多线程应用程序中使用也是相当安全的,特别是在多个线程共享单个数据库连接的情况下。后者使用一次执行一个操作的FIFO队列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25840090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档