首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSInvocationOperation收益率当量

NSInvocationOperation收益率当量
EN

Stack Overflow用户
提问于 2012-03-06 17:07:42
回答 4查看 1.8K关注 0票数 3

我正在将我制作的安卓应用程序移植到iOS上。安卓有一个Yield()函数,可以将线程从运行状态移动到后台(?)线程队列的。这很有用,这样这个线程就不会占用太多的CPU并使其他线程变得迟钝。它在我的Android应用程序中运行得很好。

我正在使用NSInvocationOperation对象来实现我的线程。如何添加类似于安卓Yield()的功能

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-06 17:23:42

我正在使用NSInvocationOperation对象来实现我的线程。

这没有多大意义。NSOperations在线程中运行,但它们本身不是线程,也不会让您实现任何与线程等效的东西。如果你真的想要一个线程,使用NSThreadpthread

如何添加类似于安卓的Yield()的功能?

如果您真的想要POSIX,可以试试sched_yield()。在更高的层次上,有pthread_yield_np() (np表示不可移植-- POSIX中没有pthread_yield() ) --但它除了调用sched_yield()什么也不做。

我不会费心,直到你发现你真的需要它,而且它是有帮助的。在iOS或Mac应用程序中做这样的事情并不常见。

票数 7
EN

Stack Overflow用户

发布于 2012-03-06 17:22:43

你查过中央调度台吗?这是在iOS上编写多线程代码的最佳方法之一。(当然,它不是所有线程问题的完美解决方案,因此这取决于您的应用程序。)例如,GCD为非性能关键型操作提供了优先级较低的队列。

编写现代iOS应用程序的通常方法是只将UI代码保留在主线程(主GCD队列中的≈)上,并将其他操作卸载到一个全局GCD队列中。来自这些队列的阻塞并不占用主线程,它们被卸载到某个后台线程(由系统管理,而不是您)。从程序员的角度来看,它非常简单,而且似乎工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2012-03-06 17:23:51

我建议你使用带有子类NSOperations的NSOperationQueue。那会有帮助的。

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

https://stackoverflow.com/questions/9580657

复制
相关文章

相似问题

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