我正在使用pthreads来创建一个后台线程来加载并在后台执行一些任务,但它稍微滞后于应用程序,因为它的工作有时很紧张。
有什么方法可以设置较低的优先级或不同的调度(或两者的组合),以便主线程有更多的CPU时间来运行?
答案 0 :(得分:2)
使用pthread_attr_setschedparam
http://linux.die.net/man/3/pthread_attr_setschedparam
使用SCHED_IDLE
调度策略降低线程的优先级
希望在SO链接之下可能有所帮助。
How to increase thread priority in pthreads?
答案 1 :(得分:2)
这不是逐字回答你的问题,而是 在Concurrency Programming Guide中 Apple建议远离线程并使用“Dispatch Queues”或 用于OS X和iOS上异步操作的“操作队列”,例如
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
// ... background task
});
和DISPATCH_QUEUE_PRIORITY_LOW
记录为
调度到队列的项目以低优先级运行;队列是 计划在所有默认优先级和高优先级之后执行 队列已安排好。