带有pthreads的后台线程

Background thread with pthreads

本文关键字:线程 后台 pthreads 带有      更新时间:2023-10-16

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

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

这并不能逐字回答你的问题,但是在并发编程指南中苹果建议不要使用线程,而是使用"调度队列"或"操作队列"用于OS X和iOS上的异步操作,例如

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

DISPATCH_QUEUE_PRIORITY_LOW文档为

分派到队列的项目以低优先级运行;队列如下计划在所有默认优先级和高优先级之后执行队列已被调度。

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

使用SCHED_IDLE调度策略降低线程

的优先级

希望下面的链接能有所帮助。

如何在pthreads中增加线程优先级?

相当于Linux中的SetThreadPriority (pthreads)

无法设置Pthread优先级