GCD

串行队列和并行队列的区别是串行队列的最大并发量为1,若最大并发量为1,async会自动转成barrier_async执行。

sync任务会通过线程私有信号量堵塞在当前线程,等待任务执行。又因为串行队列需要等待队列前面任务结束后执行下一个任务,若sync写在串行队列的其他任务内部 就会导致死锁。如:

queue.async { queue.sync {} }

queue.sync { queue.sync {} }

你可能感兴趣的:(GCD)