dispatch_sync 等待队列任务完成再往下执行
dispatch_async 不等待队列任务完成往下执行
串行队列 加入该队列的任务按序执行,单个cpu处理
并行队列 加入该队列的任务按序开始执行,完成顺序不一定(此处注意并行和并发不一样)
dispatch_sync(main_queue) 会造成死锁-----viewDidLoad方法须等待dispatch_sync这个同步方法执行完后继续执行,而同步方法又在等待队列中排在他前面的任务viewDidLoad执行完成,,,,为什么同样都是在主线程执行,这样没有死锁。其实这个和线程没有关系,和队列有关系,只要不放在主队列就不会阻塞主队列上的操作(各种系统的UI方法),这个操作只是选择了合适的时机在主线程上跑了一下而已~
gcd中的野指针问题:
在一个并发队列中,给一个对象赋值,在另一个队列中取值,就可能取出来的值是野指针。解决办法:可重入的gcd----dispatch_set_specific