任何人都可以告诉我如何在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( ¶m_test, 0, sizeof(param_test) );
memset( l_acMyPrio, 0, sizeof(l_acMyPrio) );
thread_id = pthread_self();
l_nRetVal = pthread_getschedparam(thread_id, &l_nPolicy, ¶m_test);
问候 麦迪
答案 0 :(得分:0)
您需要查看sched_curpriority
结构的sched_param
成员才能获得线程的当前优先级。获得与您设置的值相同的值是很正常的。您可能合理地期望不同价值的原因:1。您正在使用零星的调度策略; 2.线程正在处理通过MsgReceive()
及其亲属收到的消息; 3线程持有互斥锁,并且在同一个互斥锁上阻止优先级较高的线程。
示例(修剪错误处理;第二个参数的NULL是QNX扩展名):
struct sched_param param_test;
pthread_getschedparam(pthread_self(), NULL, ¶m_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