处理耗时操作的代码块...(可以多次请求数据库数据)
-
任务和队列
-
任务
就是执行操作的意思,换句话说就是你在线程中执行的那段代码。在GCD中是放在block中的。执行任务有两种方式:同步执行和异步执行。两者的主要区别是:是否具备开启新线程的能力。
-
同步执行(sync):只能在当前线程中执行的任务,不具备开启新线程的能力
必须等待当前语句执行完毕,才会执行下一条语句
不会开启线程
在当前主线程执行 block 的任务
dispatch_sync(queue, block);
-
异步执行(async):可以在新的线程中执行任务,具备开启新线程的能力
不用等待当前语句执行完毕,就可以执行下一条语句
会开启线程执行 block 的任务
异步是多线程的代名词
dispatch_async(queue, block);
异步执行(async):
NSMutableArray *receipt_MutableArray = [NSMutableArray arrayWithCapacity:0];
receipt_MutableArray = [receiptArray mutableCopy];
// 返回并发队列:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// 处理耗时操作的代码块...
for (NSDictionary *dic in receipt_MutableArray) {
[self GetAppleOrderTransactionDictionary:dic]; // 可以多次请求数据库数据
}
//通知主线程刷新
dispatch_async(dispatch_get_main_queue(), ^{
//回调或者说是通知主线程刷新,(这里可以保存、删除一下数据)
});
});
网友评论