dispatch_barrier_async :GCD栅栏方法
dispatch_apply
dispatch_semaphore:GCD信号量
持有计数的信号,计数为0时等待,不可通过.计数为1或者大于1时,计数减1且不等待,可通过.
dispatch_semaphore_create 创建一个Semaphore并初始化信号总量
dispatch_semaphore_signal 发送一个信号,让信号总量+1
dispatch_semaphore_wait 让总信号量-1 ,当信号量为0时就会一直等待,阻塞所有线程,否则可以正常执行.
这里说补充一个有关经常遇到的问题:开启两个主要异步线程,两个异步线程内部又得分别开启一个异步线程和其他耗时操作,最后还有第三个线程,这第三个线程必须等到前两个主要线程内部所有操作都完成以后再去执行,但是执行以上这些操作的时候不能卡住界面.我们就需要用到dispatch_semaphore_t