“It’s a daemon that’s global to the OS
that distributes tasks over many
cores.”
我不是很愚蠢地相信.
“Support is built into the kernel to
be aware of all GCD applications. GCD
applications work in concert with the
kernel to make logical decisions on
how to manage threads within the
application.”
听起来像这样的同步方案比在应用程序中管理逻辑要慢得多.
“GCD is exists solely in the
application and uses current system
load as a metric to how it behaves.”
这对我来说听起来更现实,但我只是在一个地方看到这样的声明.
这里真的发生了什么?它只是一个图书馆,还是整个“系统”?
解决方法 它是一个库,但有一些内核优化允许系统级别控制.特别地,发生的是,有一个附加接口pthread_workqueue,允许GCD告诉内核,它希望线程运行一些特定的功能,但实际上并不启动一个线程(它基本上是一个延续).在这一点上,根据系统负载,内核可以选择启动该延续.所以是的,有一个全局系统的基础架构管理内核中的GCD线程,第二个答案是正确的.你所犯的错误是认为在那里会出现同步,这将会导致一些费用.调度程序将运行,无论什么,GCD已经做了什么,使用一个新的界面,让调度程序不仅决定是否根据它们的相对优先级运行线程,而且是否创建或销毁线程好.
这是一个(重大)优化,但并不是绝对必要的,FreeBSD端口实际上并不支持系统范围的内容.如果要查看实际的接口,这里是pthread_workqueue.h,实现在Apple的pthread.c中,您可以看到内核用于在start_wqthread.s的asm存根中启动工作队列的存根入口点.您还可以通过爬网xnu看看如果你真的想要它如何调用到存根.
总结以上是内存溢出为你收集整理的ios – Grand Central Dispatch如何真正使用 *** 作系统?全部内容,希望文章能够帮你解决ios – Grand Central Dispatch如何真正使用 *** 作系统?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)