posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

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 19: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 20:24 | Adrian Florea
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET