GCD的一道面试题

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");
        }
        
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容