通过另一个问题的讨论,参见Debugging strange error that depends on the selected scheduler,我遇到了我的线程的调度一些问题。我在Linux 2.6.x上,使用root权限运行,并使用pthreads在用C/C++编写的时序关键应用程序中执行并行操作。了解Linux的调度时并行线程参与
我会尽力给予一些短期的,归结,片段来解释我的问题:
在主我在某个地方开始做:
struct sched_param sp;
memset(&sp, 0, sizeof(sched_param));
sp.sched_priority = 99;
sched_setscheduler(getpid(), SCHED_RR, &sp);
我明白这是代码将我的程序切换到使用RR-Scheduler,最大运行时间。优先。
当开始并行线程,我做的:
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);
我明白这一点,是交换机,会是用“优先”给予优先开始RR-调度,线程的代码。 如果主要不是切换调度程序,那么这是否等同工作?
我不明白的是,如果有必要调用主代码? (主要功能不会做任何事情,除了开始一切,然后阻止键盘输入。) 我在哪里可以找到如何工作的精确文档。我认为manpages在解释背景方面做得不错。
在此先感谢。
另一个问题是,会发生什么,如果单独的多线程进程并行运行?处理器时间如何在这些处理器之间分配? – user761451 2011-05-24 11:04:11