numaralı Linux programlaması ile ilgili daha fazla bilgi için bkz. Debugging strange error that depends on the selected scheduler, İş parçacıklarımın zamanlaması ile ilgili bazı soruları araştırdım. Kök hakları ile çalışan ve C/C++ ile yazılmış bir zamanlama kritik uygulamasında paralel şeyler yapmak için pthreads kullanarak Linux 2.6.x üzerinde çalışıyorum.Pthreads ile ilgili başka bir problemin tartışılmasıyla,
Sorumu açıklamak için biraz kısa, aşağı haşlanmış, parçacıkları vermeye çalışacağım: Ana olarak
yere başında yapın:
struct sched_param sp;
memset(&sp, 0, sizeof(sched_param));
sp.sched_priority = 99;
sched_setscheduler(getpid(), SCHED_RR, &sp);
ben kod olmasını anlıyoruz programımı, RR-Zamanlayıcısı'nı kullanacak şekilde değiştirir. önceliği. Bir pthread başlatırken
yapmam:
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);
Ben 'öncelik' de verilen öncelik kullanarak, RR-Zamanlayıcı'ya başlatılacaktır oluyor iplik geçer kod olmak gerekirse, bu anlıyoruz. Eğer ana program programlayıcısını değiştirmiyorsa, bu eşit olarak çalışacak mı?
Anlamadığım şey, bu kodu ana telefondan aramak gerekirse? (Ana işlev, her şeyi başlatmaktan ve klavye girişini engellemekten başka bir şey yapmaz.) Bunun nasıl çalıştığına dair kesin belgeleri nerede bulabilirim? Adamların arka planı açıklamak için iyi bir iş yaptıklarını sanmıyorum.
Şimdiden teşekkürler.
Başka bir soru ise, ayrı bir çok iş parçacıklı süreçler paralel çalışıyorsa ne olur? İşlemci süresi bunlar arasında nasıl dağıtılacak? – user761451