1、加锁
dispatch_semaphore_create(1);
//semaphore大于等于1,减1不等待
//否则等待到永远
dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);
//加锁的代码
……
//semaphore的值加1
dispatch_semaphore_signal();
2、异步任务同步返回
dispatch_semaphore_create(0);
//异步任务返回的结果
dispatch_semaphore_signal();
dispatch_semaphore_wait();
3、控制GCD线程的最大并发数
dispatch_semaphore_create(5);