|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2010
Messaggi: 166
|
Gestione coda numerata nei THREAD
In ambito di gestione dei thread in linguaggio C, come posso fare per gestire una coda numerata di thread? Dove cioè devo indicare quale sarà esattamente il thread successivo ad accedere alla mutex.
Mi spiego: io so quale thread può accedere alla mutex grazie ad una variabile globale, se non è il suo turno lo metto in wait. Molti altri thread però saranno in wait e verranno richiamati con una broadcast. Qui non capisco come gestire la cosa: i thread risvegliati controllano ognuno se possono accedere, cioè se il loro turno. Se possono accedono alla mutex altrimenti tornano in wait. Ma in questo dovrei scrivere una serie infinita di wait, o perlomeno di numero pari al numero di thread lanciati. Assurdo. Come si gestisce questa situazione? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Io utilizzerei due mutex: una per la sezione critica (nel caso altri thread - oltre a quelli che vuoi sequenziare - possano accedervi) ed una per il sequenziamento.
Ovviamente se solo i thread sequenziati possono accedere alla sezione critica, allora un solo mutex e' sufficiente. Farei una cosa del genere Codice:
acquisisciMutex(M1); // uno solo acquisisce, gli altri aspettano se (mio turno) { acquisisciMutex(M2); eseguiSezioneCritica(); rilasciaMutex(M2); } rilasciaMutex(M1);
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:55.