我有一个应用程序,在使用各种统计员(如目录统计员)睡眠长时间运行的过程
我看到OS X说我的过程“中招烧CPU”,因为其采取记录数以万计的迭代这样做的CPU数量很大。
我想这样做的是建立在一个“压力阀”,如
[NSThread sleepForTimeInterval:cpuDelay];
不阻止的事情就像一个双核机的其他进程/线程。
我的处理是发生在一个单独的线程,但我不能摆脱,然后重新输入枚举循环,并使用NSTimers,让机器“呼吸”
任何建议 - 应该[NSThread sleepForTimeInterval:cpuDelay];
是工作?
我分派队列中运行这些东西:
if(!primaryTask)primaryTask=dispatch_queue_create( "com.me.app.task1",backgroundPriorityAttr);
dispatch_async(primaryTask,^{
[self doSync];
});
如果过程过于密集和阻塞事件循环,然后再考虑将其分成处理的更小,时间片块,使线程的事件循环继续处理。 – TheDarkKnight
永不睡觉。决不。 – matt