posts - 504, comments - 1656, trackbacks - 139

Multithreading e Hashtable

Quando sul forum vedo domande sul multithreading, spesso il subbio riguarda quando e come proteggere i membri di una classe per poter accedere in modo sicuro da più thread contemporaneamente.

La risposta classica è sempre la stessa: se c'è la possibilità che durante una operazione di scrittura un altro thread acceda in read o write lo stesso membro condiviso, allora deve essere protetto per tutte le operazioni di read e/o write con una critical section (statement lock di c# o SyncLock di vb.net) o sistema analogo.

Un'interessante eccezione concerne la Hashtable. Questa classe infatti nasce thread safe per un writer e molteplici reader. (In pratica ingloba dentro di se il comportamento che possiamo ottenere con la classe ReaderWriterLock.)
Questo ci permette di proteggere solo le operazioni di scrittura. Proteggendo solo le scritture avremo solo un writer e infiniti reader, rispettando così il requisito della Hashtable.

Print | posted on sabato 4 settembre 2004 16.44 |

Feedback

Gravatar

# re: Multithreading e Hashtable

Per chi è interessato, dettagli sul pattern "multiple readers/single writer" si trovano nel capitolo "The Reader/Writer Lock" dell'eccellente libro "Programming .NET Components" di Juval Lowy, pp. 191-193
04/09/2004 17.24 | Adrian Florea

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 8 and 1 and type the answer here:

Powered by: