首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可可NSApplication线程模型

可可NSApplication线程模型
EN

Stack Overflow用户
提问于 2014-07-08 09:31:46
回答 1查看 401关注 0票数 0

嗨,我是可可框架的新手,所以需要帮助更好地理解这个框架。

我当前的重点领域是了解默认情况下NSApplication创建的线程数量以及控制或限制线程的方法。也就是说,我看到了创建空窗口的basic NSApplication已经创建了6个线程并使用了它。我想了解一下下面的情况。

( 1)是否有限制线程数量的方法? 2)默认情况下,NSApplication使用GCD (Grand Central Dispatch)是否有禁用它的方法?

我在寻找这些问题,因为我想从零开始实现我自己的线程模型.

我知道GCD更有效率,并且为我做线程管理。我只是在做实验,想知道。

所以请与我分享一些见解或指出正确的方向。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 17:15:49

你问:

有什么方法来限制线程的数量吗?

从您问题的上下文来看,我想您的意思是,“有什么方法限制AppKit使用的线程数吗?”,答案实际上是“否”。通过使用AppKit,您可以隐式地接受它想要在幕后使用的任何线程模型。是个黑匣子。当然,在OS上编写单个线程可执行文件(即命令行工具)在物理上是可能的,但是在OS上不使用AppKit显示任何有意义的GUI将是一项艰巨的工作。

默认情况下,NSApplication使用GCD (Grand Central Dispatch)是否有禁用它的方法?

再说一次,不。同样的理由。

我想从头开始实现我自己的线程模型..。

这有点过于简单化,但线程模型在某种程度上是由操作系统决定的。您所写的任何使用mach线程的内容(p线程基于哪个线程,GCD是基于哪个线程,等等)不是“实现您自己的线程模型”,而是其他人使用的相同的线程模型。同样,(在OS X上)如果您最终没有使用mach线程,那么您就无法在同一个进程中启动一个真正并发的执行线程(因为只有内核才能这样做),因此最终您将实现一个协作的多任务处理系统(这个系统只能在一个内核上运行),或者分叉多个进程,并使用共享内存或在它们之间进行协调(如果这样做,您仍然有效地使用mach线程,它们只是处于由内核创建的不同进程中)。

如果您想修改自己的线程池实现,只需这样做,忽略AppKit的后台线程。在任何AppKit应用程序中,主线程总是“特殊”的,所以您也必须忽略这一事实,但是如果它是您想要编写的线程池,不要让任何AppKit正在做的事情分散您的注意力。

如果你真的想要修补底层的线程模型,最好是为自己找到一个学术/研究操作系统(谷歌(Google ),用于在线大学操作系统课程),并修补其内核调度器/线程模型,而不是试图在一个庞大、成熟、大众市场、安全意识强的操作系统中重新发明方向盘,比如OS X。

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

https://stackoverflow.com/questions/24628379

复制
相关文章

相似问题

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