美文网首页
GCD的一道面试题

GCD的一道面试题

作者: 傲骨天成科技 | 来源:发表于2023-03-01 11:33 被阅读0次

GCD一个面试题

// main thread
    NSLog(@"a");

    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"b");
    });
    
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        
            NSLog(@“c”); 
    });

结果:
用xcode打印应该是a, c, b
但是真实的结果应该是a, b, c 或者 a, c, b

由于b在主线程中打印,由于主线程可能有其他耗时的任务在,所以b的打印再c之后了

答案可见下面的实例中,这个打印结果b在100个c中间某个位置打印出来的

// main thread
    NSLog(@"a");

    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"b");
    });
    
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        for (int i = 0; i < 100; i++) {
            NSLog(@"c");
        }
        
    });

相关文章

网友评论

      本文标题:GCD的一道面试题

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