了解涉及pthread的Linux调度。
|
通过讨论另一个问题,请参见调试依赖于所选调度程序的奇怪错误,我遇到了一些有关线程调度的问题。我在Linux 2.6.x上,运行时具有root权限,并使用pthread在以C / C ++编写的对时间要求严格的应用程序中执行并行操作。
我将尝试给出一些简短的摘要来解释我的问题:
首先,我主要是在某处开始:
struct sched_param sp;
memset(&sp, 0, sizeof(sched_param));
sp.sched_priority = 99;
sched_setscheduler(getpid(), SCHED_RR, &sp);
我理解这是将我的程序切换为使用RR调度程序的代码,该调度程序以最大速度运行。优先。
启动pthread时,我会执行以下操作:
sched_param param;
pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
pthread_attr_getschedparam(&attr, ¶m);
param.sched_priority = priority;
pthread_attr_setschedpolicy(&attr, SCHED_RR);
pthread_attr_setschedparam(&attr, ¶m);
我了解这一点,它是使用\'priority \'中指定的优先级将要启动的线程切换到RR-Scheduler的代码。
如果main不会切换调度程序,那是否同样有效?
我不明白的是,是否有必要在main中调用该代码? (主要功能除了启动所有内容然后阻止键盘输入外,什么也不做。)
在哪里可以找到有关其工作原理的精确文档。我认为手册页在解释背景方面做得不好。
提前致谢。
没有找到相关结果
已邀请:
2 个回复
告耸
驮帽俺篮号