使用 dispatch_async 模仿网络请求,使用 for 循环来模拟网络请求后的数据处理情况
dispatch_queue_t queue1 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//创建
dispatch_semaphore_t semaphore1 = dispatch_semaphore_create(1);
dispatch_semaphore_t semaphore2 = dispatch_semaphore_create(1);
dispatch_semaphore_t semaphore3 = dispatch_semaphore_create(1);
NSInteger num = 5;//每个 for 循环模拟5次数据操作
__block NSInteger i = 0;//在这里定义并且用 __block 修饰, 是为了在下边异步操作里获取到值
for (; i < num; i++) {
//信号量不为 >0 的时候通过
dispatch_semaphore_wait(semaphore1, DISPATCH_TIME_FOREVER);
NSLog(@"fir---%ld", i);
dispatch_async(queue1, ^{
__block NSInteger j = 0;
for (; j < num; j ++) {
dispatch_semaphore_wait(semaphore2, DISPATCH_TIME_FOREVER)