我使用pthreads創建後臺線程來加載並在後臺執行一些任務,但它有時會滯後應用程序,因爲它的工作有時很緊張。使用pthreads的後臺線程
有什麼辦法可以設置較低的優先級或不同的調度(或兩者的組合),所以主線程有更多的CPU時間來運行?
我使用pthreads創建後臺線程來加載並在後臺執行一些任務,但它有時會滯後應用程序,因爲它的工作有時很緊張。使用pthreads的後臺線程
有什麼辦法可以設置較低的優先級或不同的調度(或兩者的組合),所以主線程有更多的CPU時間來運行?
使用pthread_attr_setschedparam
http://linux.die.net/man/3/pthread_attr_setschedparam
使用SCHED_IDLE
調度策略,以降低下面
希望這樣的鏈接可以幫助線程的優先級。
How to increase thread priority in pthreads?
這不逐字回答你的問題,但 在Concurrency Programming Guide 蘋果建議從線程移開,並用 「調度隊列」 或 「操作隊列「用於OS X和iOS上的異步操作,例如
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
// ... background task
});
和DISPATCH_QUEUE_PRIORITY_LOW
記錄爲
物品分派到在低優先級隊列中運行;在排定了所有默認優先級和高優先級 隊列後,排隊執行的隊列爲 。
這是不是obj-c?我正在使用C++ –
@XavierAriasBotargues:調度隊列和塊可用於C,C++和Objective-C,比較http://developer.apple.com/library/mac/#featuredarticles/BlocksGCD/_index.html。 –
無法在iPhone中使用SCHED_IDLE;它說它的未定義... –
你有沒有包含sched.h? – bjskishore123
是的,但SCHED_IDLE沒有定義,只有SCHED_OTHER,SCHED_FIFO和SCHED_RR –