代码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级别做了一些事情。哪一个是线程安全的更好的选择,它们之间的区别是什么?
发布于 2014-09-15 10:45:26
不同之处在于,后者除了具有更好的声明性语法外,在多线程应用程序中使用也是相当安全的,特别是在多个线程共享单个数据库连接的情况下。后者使用一次执行一个操作的FIFO队列。
https://stackoverflow.com/questions/25840090
复制相似问题