我有一個應用程序,在使用各種統計員(如目錄統計員)睡眠長時間運行的過程
我看到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