gpt4 book ai didi

linux - 我需要将所有线程调度策略设置为 SCHED_RR 以提高线程优先级吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:33 26 4
gpt4 key购买 nike

我们正在使用pthread API开发多媒体跨平台应用程序。我们希望提高音频线程的优先级,使其即使在 CPU 较高的情况下也能正常工作。有些事情不容易通过测试来观察,所以我想先了解它是如何工作的。

我搜索了google,有很多将线程调度策略设置为SCHED_RR并设置优先级的示例。

例如this Apple 文档中的示例代码。

int set_my_thread_priority(int priority) {
struct sched_param sp;

memset(&sp, 0, sizeof(struct sched_param));
sp.sched_priority=priority;
if (pthread_setschedparam(pthread_self(), SCHED_RR, &sp) == -1) {
printf("Failed to change priority.\n");
return -1;
}
return 0;
}

如果我将音频线程设置为 SCHED_RR,那么我假设有两个组线程,一个是 SCHED_RR,另一个是 SCHED_OTHER,并且优先级仅影响组内线程的相对顺序。

我想知道如果任务/进程中只有一个线程是 SCHED_RR,而其他线程调度策略默认为 SCHED_OTHER,那么它如何工作或根本不起作用。

所以问题是我是否需要将任务/所有线程调度策略设置为 SCHED_RR

最佳答案

虽然我建议使用 SCHED_FIFO 来代替,但它工作得很好。无需将所有应用程序的线程设置为相同的调度策略。无论如何,操作系统完全有能力调度整个系统中的所有线程。

当然,如果高优先级线程可以被其他线程之一阻塞(等待信号量等),那么您也必须开始处理这个问题。开箱即用的 Linux 无法解决优先级反转问题。为此,您需要应用 PREMPT_RT 补丁集。

关于linux - 我需要将所有线程调度策略设置为 SCHED_RR 以提高线程优先级吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21299246/

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