GCD中的信号量是指 Dispatch Semaphore。
所谓信号,类似于道路上的信号灯,一种用来标识等待还是通过的标志。绿灯通过,红灯等待。道路中通过信号灯的颜色标识通过和等待,而Dispatch Semaphore中通过“计数”来标识通过和等待。
GCD的Dispatch Semaphore提供了三个函数操作Semaphore:
dispatch_semaphore_create //创建一个semaphore
dispatch_semaphore_signal //发送一个信号
dispatch_semaphore_wait //等待信号
/*
通过dispatch_semaphore_create 函数创建一个Semaphore并初始化信号的总量。
通过dispatch_semaphore_signal 函数发送一个信号,让信号总量加1。
通过dispatch_semaphore_wait可以使总信号量减1,当信号总量为0时就会一直等待,否则就可以正常执行
*/
接下来详细说明一下这3个函数:
dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
通过dispatch_semaphore_create 函数生成Dispatch Semaphore。参数表示计数的初始值,上面设置的初始值为1。