疯狂地模糊pthread api的线程优先级不仅奇怪地难以理解,而且它在android上也不起作用.
那么,有没有办法让我减少或增加线程的优先级?
int currentPolicy;
struct sched_param sched;
status = pthread_getschedparam(pthread_self(), ¤tPolicy, &sched);
printf("sched.sched_priority:%d currentPolicy:%d", sched.sched_priority, currentPolicy);
printf("priority min/max:%d/%d", sched_get_priority_min(currentPolicy), sched_get_priority_max(currentPolicy));
输出:
sched.sched_priority:0 currentPolicy:0
priority min/max:0/0
此外,无论我做什么,pthread_setschedparam总是为我返回一个错误(无效的参数).在我的代码中,我需要减少处理程序线程的优先级,以确保其他线程使用更多的CPU时间.或者,或者,我可以提升我的其他线程的线程优先级,我希望将其用作我的进程中其他线程的cpu.
我有什么方法可以做到这一点吗?我只使用本机c ++代码.
编辑:从这篇文章看起来像android的线程是某种轻量级的过程,并修改它们的优先级应该使用setpriority.它看起来该函数有效(getpriority之前和之后表示优先级已被修改).但是,我在我的应用程序中看不到预期的效果.