我的gcd

  首先是串行并发、同步异步的问题;

  串行并发--是否排队的问题;串行即需要排队执行,并发即可以同时执行;

  同步就是只有一个线程执行任务;可以是主线程,也可以是子线程;

  异步就是开辟多个线程,执行任务;

  //同步,串行;需注意的是,由于没有开启新线程的能力,当在主线程中使用同步串行的方法时,会造成线程锁死;

  主线程等待当前线程完成任务,当前线程就是主线程,造成死锁;

  主线程->等待->主线程->任务

 

    dispatch_sync(dispatch_queue_create(@"test1", NULL), ^{

    });

  //同步,并发

  dispatch_sync(dispatch_get_global_queue(@"test2", NULL), ^{

    }); 

  //异步,串行;

    dispatch_async(dispatch_queue_create(@"test3", NULL), ^{

    });

  //异步,并发;

    dispatch_async(dispatch_get_global_queue(@"test4", NULL), ^{

    });

posted @ 2018-02-28 15:00  儿时的可怜  阅读(65)  评论(0)    收藏  举报