美文网首页
iOS GCD (2)

iOS GCD (2)

作者: 老猫_2017 | 来源:发表于2020-01-14 19:49 被阅读0次

在iOS GCD中,几个概念, 提交的 task block 遵循 FIFO 原则。

  1. 串行 vs 并行

串行:按添加顺序来执行完成任务 DISPATCH_QUEUE_SERIAL
并行,多个任务同时执行 DISPATCH_QUEUE_CONCURRENT

  1. 同步 vs 异步

同步:在当前线程中,执行一段提交到其他线程的代码,等待执行完毕之后,继续往下执行 dispatch_sync, dispatch_barrier_sync
异步:将 操作任务Task,提交对其他线程队列之后,继续往下执行, Task 什么时候执行,有系统调度。 dispatch_async, dispatch_barrier_async

    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        NSLog(@"1"); // 任务1
        dispatch_sync(dispatch_get_main_queue(), ^{
            NSLog(@"2"); // 任务2
        });
        NSLog(@"3"); // 任务3
    });
    NSLog(@"4"); // 任务4
//    while (1) { }
    NSLog(@"5"); // 任务5

输出结果 45,必然在2,3 之前,4 在5之前,可能是 145,415,451 这几个情况

相关文章

网友评论

      本文标题:iOS GCD (2)

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