与pthreads的背景螺纹

时间:2013-05-20 17:03:32

标签: c++ ios pthreads

我正在使用pthreads来创建一个后台线程来加载并在后台执行一些任务,但它稍微滞后于应用程序,因为它的工作有时很紧张。

有什么方法可以设置较低的优先级或不同的调度(或两者的组合),以便主线程有更多的CPU时间来运行?

2 个答案:

答案 0 :(得分:2)

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

使用SCHED_IDLE调度策略降低线程的优先级

希望在SO链接之下可能有所帮助。

How to increase thread priority in pthreads?

Equivalent of SetThreadPriority on Linux (pthreads)

Unable to set Pthread Priority

答案 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记录为

  

调度到队列的项目以低优先级运行;队列是   计划在所有默认优先级和高优先级之后执行   队列已安排好。