2013-05-20 78 views
2

我使用pthreads創建後臺線程來加載並在後臺執行一些任務,但它有時會滯後應用程序,因爲它的工作有時很緊張。使用pthreads的後臺線程

有什麼辦法可以設置較低的優先級或不同的調度(或兩者的組合),所以主線程有更多的CPU時間來運行?

回答

2

使用pthread_attr_setschedparam http://linux.die.net/man/3/pthread_attr_setschedparam

使用SCHED_IDLE調度策略,以降低下面

希望這樣的鏈接可以幫助線程的優先級。

How to increase thread priority in pthreads?

Equivalent of SetThreadPriority on Linux (pthreads)

Unable to set Pthread Priority

+0

無法在iPhone中使用SCHED_IDLE;它說它的未定義... –

+0

你有沒有包含sched.h? – bjskishore123

+0

是的,但SCHED_IDLE沒有定義,只有SCHED_OTHER,SCHED_FIFO和SCHED_RR –

2

這不逐字回答你的問題,但 在Concurrency Programming Guide 蘋果建議從線程移開,並用 「調度隊列」 或 「操作隊列「用於OS X和iOS上的異步操作,例如

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ 
    // ... background task 
}); 

DISPATCH_QUEUE_PRIORITY_LOW記錄爲

物品分派到在低優先級隊列中運行;在排定了所有默認優先級和高優先級 隊列後,排隊執行的隊列爲 。

+0

這是不是obj-c?我正在使用C++ –

+0

@XavierAriasBotargues:調度隊列和塊可用於C,C++和Objective-C,比較http://developer.apple.com/library/mac/#featuredarticles/BlocksGCD/_index.html。 –