Co się stanie, jeśli wątek o niskim priorytecie blokuje muteks w strategii planowania RR, co spowoduje, że wątek zostanie usunięty przez program planujący, ponieważ oczekuje na to inny wątek o wysokim priorytecie?Planowanie wątków w systemie UNIX
Czy zwolni również blokadę z wątku o niskim priorytecie?
Przykładowo rozważ 3 wątki działające w procesie z priorytetami 10,20 i 30 w strategii planowania RR.
Teraz w danym momencie wątek o niskim priorytecie 1 blokuje mutex i nadal wykonuje operację, podczas gdy wątek o wysokim priorytecie pojawia się i czeka również na muteksie trzymanym przez wątek 1. Teraz wątek 2 pojawia się w obrazie, który również potrzebuje ten sam muteks zablokowany przez wątek 1.
O ile wiem, zgodnie z algorytmem szeregowania, wątki śpiące lub czekające na muteks, semafor itp. są usuwane, a pozostałe, nawet o niskim priorytecie, mogą być wykonywane. Czy to jest poprawne? Jeśli tak, w powyższym przykładzie wątki o najwyższym priorytecie czekają na zakończenie wątku o niskim priorytecie, co nie ma żadnego sensu. Czy tak działa system, jeśli wszystkie wątki są zaprojektowane tak jak powiedziałem powyżej?
lub priorytet wątku należy ustawić w taki sposób, aby jego wysoki priorytet nie był zależny od mutexe użytkownika o niskim priorytecie?
Czy ktoś może mi wyjaśnić, jak działa harmonogram na poziomie procesu? Jak ustawić priorytet dla procesu?
Problem był "zbyt dużą liczbą wątków, za mało rdzeni", ale rewolucja wielordzeniowa szybko odwraca ten problem. Priorytety wątków są użyteczne, gdy trzeba wybrać wątek, który ma zostać uruchomiony, a nie kiedy projektanci chipów zastanawiają się, czy dodatkowy rdzeń nadal może zrobić coś pożytecznego. – MSalters