GCD---dispatch_group_wait和dispatch_semaphore

有两个参数,第一个数分组,第二个是dispatch_time_t类型的参数,而不要传入1,2,或者1000,因为打印出来看是一个很大的数字
dispatch_group_wait(mygroup, dispatch_time(DISPATCH_TIME_NOW, 4.0 * NSEC_PER_SEC));

//假设创建dispatch_group_wait里的dispatch_time等待时间是4秒,那么group里的内容在4s内完成的话,那wait直接结束,如果group在4s内没有执行完,那么wait也会结束,结束之后,周末的任务就会被加进来了


//设定总信号量
dispatch_semaphore_t source = dispatch_semaphore_create(1);

//消耗一个信号量
dispatch_semaphore_wait(source, dispatch_time(DISPATCH_TIME_NOW, 10.0 * NSEC_PER_SEC));

//发出一个信号量
dispatch_semaphore_signal(source);

//当信号量为0的时候,wait下面的代码不执行

你可能感兴趣的:(GCD---dispatch_group_wait和dispatch_semaphore)