objective-c – 大中央调度vs NSThreads?

objective-c – 大中央调度vs NSThreads?,第1张

概述我搜索了各种来源,但不真正了解使用NSThreads和GCD之间的区别。我对OS X平台完全陌生,所以我可能完全误解了这一点。 从我在线阅读,GCD似乎做与基本线程(POSIX,NSThreads等)完全相同的事情,而添加更多的技术术语(“块”)。它似乎只是过度复杂的基本线程创建系统(创建线程,运行功能)。 什么是GCD和为什么它会优先于传统线程?什么时候应该使用传统线程而不是GCD?最后是GCD 我搜索了各种来源,但不真正了解使用NSThreads和GCD之间的区别。我对OS X平台完全陌生,所以我可能完全误解了这一点。

从我在线阅读,GCD似乎做与基本线程(POSIX,NSThreads等)完全相同的事情,而添加更多的技术术语(“块”)。它似乎只是过度复杂的基本线程创建系统(创建线程,运行功能)。

什么是GCD和为什么它会优先于传统线程?什么时候应该使用传统线程而不是GCD?最后是GCD的奇怪语法的原因吗? (“块”,而不是简单地调用函数)。

我在Mac OS X 10.6.8 SNow Leopard,我不是为iOS编程 – 我是为Mac编程。我在Cocoa中使用Xcode 3.6.8,创建一个GUI应用程序。

解决方法 调度的优点

调度的优点主要概述如下:

Migrating Away from Threads

这个想法是,你消除了你的工作,因为范式适合MOST代码更容易。

It reduces the memory penalty your application pays for storing thread stacks in the application’s memory space. It eliminates the code needed to create and configure your threads. It eliminates the code needed to manage and schedule work on threads. It simplifIEs the code you have to write.

经验上,使用GCD类型锁定而不是@synchronized大约快80%或更多,虽然微基准可能是欺骗。阅读更多here,虽然我认为与写入异步的建议不适用在许多情况下,它的速度较慢(但它是异步的)。

线程的优点

为什么要继续使用Threads?从同一文件:

It is important to remember that queues are not a panacea for
replacing threads. The asynchronous programming model offered by
queues is appropriate in situations where latency is not an issue.
Even though queues offer ways to configure the execution priority of
tasks in the queue,higher execution prioritIEs do not guarantee the
execution of tasks at specific times. Therefore,threads are still a
more appropriate choice in cases where you need minimal latency,such
as in audio and vIDeo playback.

另一个我没有亲自发现使用队列的理想解决方案的地方是需要不断重新安排的守护进程。不是你不能重新安排它们,而是在NSThread方法中循环更简单(我认为)。编辑:现在我相信,即使在这种情况下,GCD风格的锁也会更快,你也可以在GCD调度 *** 作中做一个循环。

Objective-C中的块?

块是真的可怕的Objective-C由于可怕的语法(虽然Xcode有时可以帮助自动完成,至少)。如果你看Ruby中的块(或任何其他语言,几乎),你会看到他们是多么简单和优雅的分派 *** 作。我会说你会习惯Objective-C语法,但我真的认为你会习惯于从你的例子复制:)

你可能会发现my examples from here是有帮助的,或只是分心。不确定。

总结

以上是内存溢出为你收集整理的objective-c – 大中央调度vs NSThreads?全部内容,希望文章能够帮你解决objective-c – 大中央调度vs NSThreads?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1042539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存