信号量:控制最大的并发数
//创建信号为为10
dispatch_semaphore_t semaphore = dispatch_semaphore_create(10);
for (int i = 0; i < 100; i++) {
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//由于信号量为10 队列里面最多会有10个人任务被执行 信号量-1
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
NSLog(@"________%d______",i);
//休眠
[NSThread sleepForTimeInterval:3];
//信号量+1
dispatch_semaphore_signal(semaphore);
});
打印结果
由于信号量为10,所以每次打印10个数。
网友评论