zoukankan      html  css  js  c++  java
  • 多线程理解实践

    1.微博面试题 

        dispatch_queue_t queue = dispatch_queue_create("com.lg.cooci.cn", DISPATCH_QUEUE_CONCURRENT);
        dispatch_async(queue, ^{ // 耗时
            NSLog(@"1");
        });
        dispatch_async(queue, ^{
            NSLog(@"2");
        });
        
        dispatch_sync(queue, ^{
            NSLog(@"3");
        });
        
        NSLog(@"0");
    
        dispatch_async(queue, ^{
            NSLog(@"7");
        });
        dispatch_async(queue, ^{
            NSLog(@"8");
        });
        dispatch_async(queue, ^{
            NSLog(@"9");
        });

    // A: 1230789
    // B: 1237890
    // C: 3120798
    // D: 2137890

    结果:A或者C

    分析:123顺序不定,  0 肯定在3后面 ,789 顺序不定, 肯定在0后面

    2.快手面试题

        dispatch_queue_t queue = dispatch_queue_create("cooci", NULL);
        NSLog(@"1");
        // 异步函数
        dispatch_async(queue, ^{
            NSLog(@"2");
            // 同步
            dispatch_sync(queue, ^{
                NSLog(@"3");
            });
        });
        NSLog(@"5");

    结果:打印 1 5 2 然后  dispatch_sync(queue 这一行死锁

    分析:主线程 打印 1 5, dispatch_async(queue 新开辟一个子线程,子线程 打印 2,串行队列必须执行完一个任务再执行另一个。串行队列执行同步函数,然后同步函数又要获得串行队列去做其他事,形成死锁。

    在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
  • 相关阅读:
    Windows Phone 7 利用计时器DispatcherTimer创建时钟
    杭电1163 Eddy's digital Roots
    随感1
    杭电 1194 Beat the Spread!
    杭电 1017 A Mathematical Curiosity
    杭电1202 The calculation of GPA
    关于递归的思想
    杭电1197 Specialized FourDigit Numbers
    杭电 1062 Text Reverse
    杭电1196 Lowest Bit
  • 原文地址:https://www.cnblogs.com/huangzs/p/14831910.html
Copyright © 2011-2022 走看看