gpt4 book ai didi

c - 如何在QNX中找到线程的当前优先级

转载 作者:行者123 更新时间:2023-11-30 15:40:45 26 4
gpt4 key购买 nike

谁能告诉我如何在 QNX 中找到线程的当前优先级。我使用了 pthread_getschedparam() 函数,但这不会打印预期值,因为分配的值和当前的值实际上是相同的。

代码片段如下所示,l_nRetVal返回0即成功。

    pthread_t thread_id = 0;
struct sched_param param_test;
int l_nPolicy = -1;
int l_nRetVal = -1;
char l_acMyPrio[20];

memset( &param_test, 0, sizeof(param_test) );
memset( l_acMyPrio, 0, sizeof(l_acMyPrio) );
thread_id = pthread_self();
l_nRetVal = pthread_getschedparam(thread_id, &l_nPolicy, &param_test);

问候麦迪

最佳答案

您需要查看 sched_pa​​ram 结构的 sched_curpriority 成员来获取线程的当前优先级。获得与您设置的值相同的值是很正常的。您可能期望不同值的合理原因: 1. 您使用的是零星调度策略; 2. 线程正在处理通过 MsgReceive() 及其相关函数接收到的消息; 3 线程持有互斥锁,并且具有更高优先级的线程在同一个互斥锁上被阻塞。

示例(已修剪错误处理;第二个参数为 NULL 是 QNX 扩展):

   struct sched_param  param_test;

pthread_getschedparam(pthread_self(), NULL, &param_test);
printf("assigned_priority=%d; current_priority=%d\n", param_test.sched_priority, param_test.sched_curpriority);

QNX 文档中的另一个示例:http://www.qnx.com/developers/docs/6.5.0_sp1/topic/com.qnx.doc.neutrino_lib_ref/s/sched_param.html

关于c - 如何在QNX中找到线程的当前优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20857958/

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