在GCD中有三个函数是semaphore的操作,分别是:
dispatch_semaphore_create   创建一个semaphore
dispatch_semaphore_signal   发送一个信号
dispatch_semaphore_wait    等待信号

1
2
3
dispatch_semaphore_t sema = dispatch_semaphore_create(0); 
dispatch_semaphore_signal(sema);
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);