1
6
这个
当您向GCD队列调度某些内容时,它将从此池中获取可用的工作线程。您无法保证从一次调用到下一次调用它使用哪一个。但您不必担心它是否是另一个线程,因为GCD正在管理这个线程池,以确保不会不必要地创建和销毁线程。这是我们使用GCD而不是自己做的主要原因之一
你唯一需要担心的是你在应用程序中使用的并发程度,这样你就不会耗尽这个工作线程池(对可能在同一个工作线程池中使用的其他后台任务产生意外影响)。 限制并发程度最严厉的方法是使用您自己创建的共享串行队列。这意味着一次只能在该串行队列上运行一个对象。(注意,即使在这种情况下,也不能保证每次都使用相同的线程;只能保证一次只使用一个后台工作线程。)
限制应用程序中并发程度的一种稍微更精确的方法是使用
在修改后的问题中,您向我们展示了一段代码片段。因此,有几个想法:
如果您喜欢使用自定义GCD串行队列(一次只能进行一次缝合操作)或自定义GCD并发队列(不限制在任何给定时间运行多少缝合任务),请随时使用。您知道这些操作有多么耗时和/或资源密集,因此只有您可以拨打该电话。但操作队列提供了并发的好处,但可以简单地控制并发程度。 |
2
4
而不是使用
|
3
2
并发队列的默认实现确实重用线程,但不等待空闲线程:如果没有空闲线程,则itll create。 因此,它会过度使用,您需要确保自己不会产生太多长时间运行的任务。对于“真正的”线程池 你需要 a) 您自己的队列 b) “限制器”使您 有关示例,请参见: IOS thread pool |
Martin sku · 在目标C中打印时间 2 年前 |
Vinod prajapat · 如何更新数组的最后一个元素? 2 年前 |
subin272 · 修复iOS中的多个按钮单击事件? 6 年前 |
James Chan · 如何使用锁定/解锁? 6 年前 |
Josh F. · NSBundle mainBundle返回零 6 年前 |