通過另一個問題的討論,參見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