gpt4 book ai didi

android - 在 Android 上设置线程优先级

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:10 25 4
gpt4 key购买 nike

我想更改 Android 上实时音频线程的优先级。如果我将 TThread.Priority 设置为 0 以外的任何值,我会得到一个异常:

EThread: Thread Error: Invalid argument"

如何正确设置线程优先级?

最佳答案

在 POSIX 系统(如 Android)上,有一个 TThread.Policy 属性指定线程的调度策略,该策略反过来控制 TThread.Priority 属性的行为方式.最有可能的是,您尝试为 Priority 分配的值在当前 Policy 中没有意义。例如,SCHED_OTHER(默认值)的Policy 仅支持 0 的 Priority,而 Policy SCHED_FIFOSCHED_RR 支持 1-99 的 Priority(某些 POSIX 系统甚至可能将它们限制为 32)。

因此您必须首先确保Policy 设置为所需的策略,然后您可以根据需要更改Priority。但是请注意,某些 Policy 值(例如 SCHED_FIFOSCHED_RR)需要 root/admin 权限才能更改其调度 优先级

这些信息都没有记录在 Embarcadero DocWiki 上,甚至 TThread.Policy 属性也没有记录。我查看了 TThread 源代码,发现它使用 POSIX pthread_getschedparam()pthread_setschedparam() 函数来获取/设置线程的PolicyPriority 值。然后我查看了这些函数的在线引用资料,例如 this one .因此,在您的情况下,pthread_setschedparam() 因以下错误而失败:

EINVAL policy is not a recognized policy, or param does not make sense for the policy.

关于android - 在 Android 上设置线程优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24002988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com