ciao MItaly,![]()
il problema sta nella sincronizzazione, diciamo che se uso lock per controllare la var mi tiene bloccato lo stesso tanto che controllare direttamente la porta e quindi di metterla in coda, mi spiego meglio :
supponiamo che io abbia una classe che si occupa di avere una lista di porte e un metodo che esegue un'altra classe che incapsula tutta la logica di comunicazione, quest'ultima viene eseguita in altro thread che ha il suo ciclo di vita ed è indipendente, quando ha terminato genera un evento.
ora se io uso una qualsiasi risorsa (in questo caso come dici tu una lista di porte e ne controllo la prop. IsOpen oppure aggiungo dei bool per porta ecc..) devo "lockkarla" se no addio coerenza... pero' comunque non ho la certezza assoluta che dal momento che controllo e ottengo il via libera al momento che impegno la porta un altro thread non abbia fatto prima e se lockko tutta la classe, la blocco anche per i thread che devono attendere che io finisca di lavorare (ho leggere) la mia lista di porte perchè a quel punto prima di morire il thread deve utilizzare la lista per liberare, quindi se la lista e lock anche i tread lo diventano.
se sincronizzo i thread ottengo una coda coerente ma non so come smistare ed incanalare su diverse code.