首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DispatchQueue正在使用RunLoop吗?

DispatchQueue正在使用RunLoop吗?
EN

Stack Overflow用户
提问于 2022-01-20 07:47:28
回答 1查看 516关注 0票数 1

每个Thread都有自己的RunLoopDispatchQueue是如何与它们交互的?DispatchQueue是使用RunLoop将任务分派给Thread,还是以另一种方式执行任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-20 18:57:58

任何线程都可以有一个run循环,但是,在现实中,只有主线程才有。

当您手动创建线程时,它将不具有run循环。当您调用RunLoop.current时,名称表示它正在抓取线程的运行循环,这意味着它总是有一个循环。但实际上,当您调用current时,如果其中一个已经存在,它将返回run循环,如果没有,它将为您创建一个RunLoop。正如医生们所说:

如果线程还不存在run循环,则创建并返回一个循环。

如果您确实创建了一个run循环,那么您必须自己在其上旋转(如这里所示;该示例过于简化)。但我们不再经常这么做了。全球气候变化已使其基本上过时。

在较高级别上,GCD有工作线程池,每个服务质量池(QoS)一个。当您通过GCD向任何队列(不针对main队列)发送某个内容时,它会捕获适当QoS的可用工作线程,执行任务,并在完成后将该工作线程标记为可用于未来分派的任务。这些工作线程不需要(或不需要)运行循环。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70782419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档