iOS 多线程开发GCD如何控制最大并发数

 我来答
八维教育
2016-11-18 · 学高端技术就来八维教育
八维教育
北京八维教育是位于首都中关村上地信息产业园区的一所民办非学历高等教育机构。课程设置以市场需求为导向、以岗位要求为标准、为企业量身打造符合企业和市场需求的专业型人才。
向TA提问
展开全部

GCD中的信号量控制机制--dispatch_semaphore_create。创建信号量的方式:(1)dispatch_semaphore_creat SignalCount = dispatch_semaphore_creat(10).这个地方后面的这个10,是一个整数,可以是1,2,3,。。。表示在信号等待的时候,下一次收到的的信号量,说白了,就是这个数字控制的最大并发数。(2)dispatch_semaphore_signal( ),这是一句表示信号通知。表示在信号等待的时候,收到的下一个信号量。一般是一个“信号量对象”。(3)dispatch_semaphore_wait(参数一,参数二 ),这一句表示信号等待。一般参数一会放一个信号对象,就是我们建立的那个,如果这个对列的信号量小于0的时候,就会一直等待下去。参数二的值一般是 DISPATCH_TIME_FOREVER 和 DISPATCH_TIME_NOW下面我们写一段代码来说明一下。(注:当然是参考别人的)

这个地方,解释一下,新建一个信号量为10的对象,就是将队列的最大并发数控制在10。第一次打印的结果是 0,1,2,3,4,5,6,7,8,9。十个数字。最关键的是dispatch_semaphore_signal(semphore),如果打印完第一轮十个数字,不再进行信号通知的话,线程就永远阻塞下去咯。剩下的10~99就不会再打印下去

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式