GCD学习总结

2020-10-28  本文已影响0人  纱云
  dispatch_queue_t queue = dispatch_queue_create("make", DISPATCH_QUEUE_SERIAL);
    NSLog(@"1");
    dispatch_async(queue, ^{
        NSLog(@"2");
        dispatch_sync(queue , ^{
            NSLog(@"3");
        });
        NSLog(@"4");

    });
    NSLog(@"5");

串行同步会造成死锁

   dispatch_queue_t queue = dispatch_queue_create("make", DISPATCH_QUEUE_CONCURRENT);
    NSLog(@"1");
    //队列是一种数据结构
    dispatch_async(queue, ^{
        NSLog(@"2");
        dispatch_async(queue , ^{
            NSLog(@"3");
        });
        NSLog(@"4");
    });
    NSLog(@"5");

执行顺序 :1 5 2 4 3 异步不阻塞线程

 dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    dispatch_group_t group = dispatch_group_create();
    dispatch_group_enter(group);
//dispatch_group_enter signal+1 当等于0 会唤醒dispatch_group_notify
    dispatch_async(queue, ^{
        NSLog(@"finish");
        dispatch_group_leave(group);//signal-1
    });
    
    dispatch_group_enter(group);
    dispatch_async(queue, ^{
        NSLog(@"finish1");
        dispatch_group_leave(group);
    });
    
    dispatch_group_notify(group, queue, ^{
        NSLog(@"所有任务执行完毕");
    });
上一篇 下一篇

猜你喜欢

热点阅读