gpt4 book ai didi

linux - linux下pthread优先级和lwp优先级有什么关系?

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

我有一个通过 pthread_attr_setschedpolicy 使用 SCHED_FIFO 在 Linux 上运行的应用程序。

我的理解是 pthread_attr_setschedparam() 应该允许在线程启动之前在线程属性结构上设置线程优先级,并且 Posix 要求至少支持 32 级。

确实在运行时:

sched_get_priority_max(SCHED_FIFO) = 99
sched_get_priority_min(SCHED_FIFO) = 1

线程优先级在 pthread_create 使用之前设置:

pthread_attr_setinheritsched(&thread_attr,PTHREAD_EXPLICIT_SCHED))
pthread_attr_setschedparam(&thread_attr)

如果我审问它

pthread_attr_t thread_attr;
struct sched_param s_param;
int res = pthread_getattr_np(channel_data_p->thread, &thread_attr);
assert(res == 0);
res = pthread_attr_getschedparam (&thread_attr, &s_param);
assert(res == 0);
log_write("thread %d, priority = %d",threadId,s_param.sched_priority);

我看到了预期的优先级。但是,我不清楚如何使用 ps -o、top -H 或查看/proc 来显示 pthreads 优先级或者如何将 PR 和 NI 等 Linux 值(如果它们是在 top -H 下要观察的正确字段)关联回 posix 优先级。

我无意动态地打乱优先级,所以这更符合学术兴趣。

最佳答案

pthreads 优先级直接映射到 Linux 线程/进程优先级。

这篇文章很好地描述了调度程序(来自 Linux Kernel Development 一书):

http://www.informit.com/articles/article.aspx?p=101760&seqNum=2

如前所述here linux 现在调度线程而不是进程使用 1:1线程到进程的映射。

关于linux - linux下pthread优先级和lwp优先级有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854399/

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