美文网首页
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