我的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), ^{
});

浙公网安备 33010602011771号