美文网首页
dispatch_async 处理耗时操作的代码块...

dispatch_async 处理耗时操作的代码块...

作者: 阳光下的叶子呵 | 来源:发表于2021-11-02 16:38 被阅读0次
    处理耗时操作的代码块...(可以多次请求数据库数据)
    • 任务和队列
    • 任务

    就是执行操作的意思,换句话说就是你在线程中执行的那段代码。在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(), ^{
                            //回调或者说是通知主线程刷新,(这里可以保存、删除一下数据)
    
                        });
                    });
                   
    

    相关文章

      网友评论

          本文标题:dispatch_async 处理耗时操作的代码块...

          本文链接:https://www.haomeiwen.com/subject/fyffzltx.html