Nel contesto di questa dichiarazione,Chiarimento di Lettura e Scrittura su un C# dizionario
Un dizionario può supportare più lettori simultaneamente, purché come la raccolta non viene modificato. Anche così, l'enumerazione tramite una raccolta non è intrinsecamente una procedura thread-safe . Nel raro caso in cui un'enumerazione contende con accessi in scrittura, la raccolta deve essere bloccata durante l'intera enumerazione . Per consentire alla collezione di accedere a più thread per la lettura e scrittura , è necessario implementare la propria sincronizzazione.
Cosa significa lettura e scrittura? La mia comprensione è che una lettura è un'operazione che cerca una chiave e fornisce un riferimento al suo valore e una scrittura è un'operazione che aggiunge o rimuove una coppia di valori chiave dal dizionario. Tuttavia, non riesco a trovare nulla di conclusivo riguardo a questo.
Quindi la grande domanda è, mentre si implementa un dizionario thread-safe, un'operazione che aggiorna il valore di una chiave esistente nel dizionario dovrebbe essere considerata un lettore o uno scrittore? Ho intenzione di avere più thread che accedono a chiavi univoche in un dizionario e di modificare i loro valori, ma i thread non aggiungeranno/rimuoveranno nuove chiavi.
L'ovvia implicazione, assumendo la modifica di un valore esistente non è un'operazione di scrittura sul dizionario, è che la mia implementazione del threaday dizione sicura può essere molto più efficiente, in quanto non avrei bisogno di ottenere un blocco esclusivo ogni volta Cerco di aggiornare il valore su una chiave esistente.
L'utilizzo di ConcurrentDictionary da .Net 4.0 non è un'opzione.
Questo è davvero un commento, non una risposta alla domanda. Si prega di utilizzare "aggiungi commento" per lasciare un feedback all'autore. – SliverNinja
@SliverNinja, mi sembra che questa risposta risolva la domanda principale "sarebbe un'operazione che aggiorna il valore di una chiave esistente nel dizionario da considerare un lettore o uno scrittore?". – binki