嗨,我是可可框架的新手,所以需要帮助更好地理解这个框架。
我当前的重点领域是了解默认情况下NSApplication创建的线程数量以及控制或限制线程的方法。也就是说,我看到了创建空窗口的basic NSApplication已经创建了6个线程并使用了它。我想了解一下下面的情况。
( 1)是否有限制线程数量的方法? 2)默认情况下,NSApplication使用GCD (Grand Central Dispatch)是否有禁用它的方法?
我在寻找这些问题,因为我想从零开始实现我自己的线程模型.
我知道GCD更有效率,并且为我做线程管理。我只是在做实验,想知道。
所以请与我分享一些见解或指出正确的方向。提前感谢
发布于 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。
https://stackoverflow.com/questions/24628379
复制相似问题