Quando un mutex è già bloccato da T1 e T2 tenta di bloccarlo, qual è il processo per T2?Implementazione e segnalazione mutex
credo che più o meno così:
-T2 prova a bloccare, non riesce, forse spinlocks un po ', quindi chiama il rendimento ...
-T2 è prevista per l'esecuzione di un paio di volte, prova a bloccare fallisce, i rendimenti ...
-Eventually T1 sblocca, T2 è previsto per l'esecuzione e riesce a bloccare il mutex ...
fa T1 sblocco esplicito segnale alla pianificazione o di altri thread che il mutex è sbloccato? Oppure si sblocca e lascia lo scheduler per pianificare i thread bloccati quando si ritiene opportuno farlo (in quanto lo scheduler non ha idea di thread bloccati e non li considera come speciali)?
"Penso che il principio di mutua esclusione garantisca che nessun 2 o più thread entri nella sezione critica allo stesso tempo. Ora, che tu abbia una coda per i thread che stanno cercando di bloccare il mutex o che tu faccia solo un busy-wait fino a quando un mutex è libero dipende da come lo implementa e quali sono le tue esigenze per mutex. Ad esempio, 'mutex' in RTOS come VxWorks implementa il protocollo del limite di priorità, che potrebbe non essere necessario nel sistema operativo generale (GPOS). – Raj