Harmonogram wątków

Każdy wątek ma przypisany priorytet wątku. Wątki utworzone w środowisku uruchomieniowym języka wspólnego są początkowo przypisywane priorytet .ThreadPriority.Normal Wątki utworzone poza środowiskiem uruchomieniowym zachowują priorytet, jaki mieli przed wejściem do środowiska zarządzanego. Możesz uzyskać lub ustawić priorytet dowolnego wątku z właściwością Thread.Priority .

Wątki są zaplanowane do wykonania na podstawie ich priorytetu. Mimo że wątki są wykonywane w środowisku uruchomieniowym, wszystkie wątki są przypisywane wycinki czasu procesora przez system operacyjny. Szczegóły algorytmu planowania używanego do określania kolejności wykonywania wątków różnią się w zależności od każdego systemu operacyjnego. W niektórych systemach operacyjnych wątek o najwyższym priorytcie (z tych wątków, które można wykonać) jest zawsze zaplanowany do pierwszego uruchomienia. Jeśli wszystkie wątki z tym samym priorytetem są dostępne, harmonogram będzie przechodził przez wątki o tym priorytcie, dając każdemu wątkowi stały wycinek czasu, w którym ma zostać wykonany. Jeśli wątki o wyższym priorytcie są dostępne do uruchomienia, wątki o niższym priorytcie nie są wykonywane. Jeśli nie ma więcej wątków możliwych do uruchomienia w danym priorytcie, harmonogram przechodzi do następnego niższego priorytetu i planuje wątki o tym priorytcie na potrzeby wykonywania. Jeśli wątek o wyższym priorytcie staje się uruchamiany, wątek o niższym priorytcie jest wywłaszczony, a wątek o wyższym priorytcie może być wykonywany po raz kolejny. Oprócz tego system operacyjny może również dynamicznie dostosowywać priorytety wątków, ponieważ interfejs użytkownika aplikacji jest przenoszony między pierwszym i tłem. Inne systemy operacyjne mogą zdecydować się na użycie innego algorytmu planowania.

Zobacz też