ReaderWriterLock

ReaderWriterLock consente a più thread di leggere contemporaneamente una risorsa, ma, per scrivere nella risorsa, è necessario che un thread attenda un blocco esclusivo.

All'interno dell'applicazione è possibile utilizzare ReaderWriterLock per effettuare la sincronizzazione cooperativa tra i thread che accedono a una risorsa condivisa. In tal caso, i blocchi vengono effettuati sullo stesso ReaderWriterLock. Come con qualsiasi meccanismo di sincronizzazione di thread, è necessario assicurasi che nessun thread ignori ReaderWriterLock.

In alternativa, è possibile progettare una classe che incapsula una risorsa. In questa classe sarà possibile utilizzare ReaderWriterLock per implementare lo schema di blocco della risorsa. Dal momento che in ReaderWriterLock viene utilizzata un'efficace progettazione, sarà possibile utilizzarlo per sincronizzare i singoli oggetti.

Strutturare l'applicazione in modo da ridurre la durata delle operazioni di lettura e scrittura. Le operazioni di scrittura lunghe influiscono direttamente sulla trasmissione di dati poiché il blocco scrittura è esclusivo. Le operazioni di lettura lunghe bloccano i writer in attesa e, se anche un solo thread è in attesa del blocco scrittura, verranno bloccati anche i thread che necessitano di nuovi blocchi per operazioni di lettura.

Vedere anche

Threading | Oggetti e funzionalità del threading | Classe ReaderWriterLock | Monitor