android 结束c层线程,在c/c ++中更改Android上的本机线程优先级

博主在尝试使用pthread库在Android上改变线程优先级时遇到困难,发现pthread_setschedparam返回错误。文章提到Android的线程可能被视为轻量级进程,并建议使用setpriority函数来修改优先级,但实际效果不明显。讨论了如何在本机C++代码中调整线程优先级以平衡CPU资源分配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

疯狂地模糊pthread api的线程优先级不仅奇怪地难以理解,而且它在android上也不起作用.

那么,有没有办法让我减少或增加线程的优先级?

int currentPolicy;

struct sched_param sched;

status = pthread_getschedparam(pthread_self(), &currentPolicy, &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之前和之后表示优先级已被修改).但是,我在我的应用程序中看不到预期的效果.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值