Hallo,
Kan iemand mij in het volgende verhelderen.
Een class bevat een (statische) sortedlist (Collection). Deze wordt door verschillende threads gelezen en soms bewerkt. Je begrijpt, dit kan niet asynchroon dus moet dit gesynchroniseerd worden opgelost. Maar ik zie door de bomen het bos niet meer.
Zo kan ik gebruik maken van:
- de Monitor class van System.Threading. Daarmee wordt voorkomen dat bepaalde stukken code tegelijkertijd door verschillende threads worden uitgevoerd. Maar de parameter voor Monitor.Enter/TryEnter is een object en moet (?) de class zijn? En ik begrijp echt niet wat Pulse en Wait voor method zijn. Hoe moet ik de MOnitor zien in mijn situatie met de Sortedlist?
- Dan heb je ook de mogelijkheid om lock statement te gebruiken. In princpe komt dit toch op het zelfde neer als de Monitor class? Of zit daar echt een verschil in. Maar wat moet ik dan locken? De sortedlist, of de property Sortedlist.SyncRoot?
- Want dan kom ik gelijk op het volgende. Ik snap gewoon niet wat de functionaliteit van SyncRoot is. Het maakt een wrapper waarmee ik gesynchroniseerd de sortedlist item op een veilige manier kan aflopen?
- Dan heb je ook nog de mogelijkheid van ReaderWriterLock Class. Ik heb mij daar nog niet in verdiept maar zou dat een oplossing kunnen zijn?
Kortom, hoe moet ik met een SoredList omgaan die door meerdere threads worden bewerken/gelezen zonder conflicten (lezen en de SortedLis wordt tegelijkertijd bewerkt door een thread).
Kan iemand mij in het volgende verhelderen.
Een class bevat een (statische) sortedlist (Collection). Deze wordt door verschillende threads gelezen en soms bewerkt. Je begrijpt, dit kan niet asynchroon dus moet dit gesynchroniseerd worden opgelost. Maar ik zie door de bomen het bos niet meer.
Zo kan ik gebruik maken van:
- de Monitor class van System.Threading. Daarmee wordt voorkomen dat bepaalde stukken code tegelijkertijd door verschillende threads worden uitgevoerd. Maar de parameter voor Monitor.Enter/TryEnter is een object en moet (?) de class zijn? En ik begrijp echt niet wat Pulse en Wait voor method zijn. Hoe moet ik de MOnitor zien in mijn situatie met de Sortedlist?
- Dan heb je ook de mogelijkheid om lock statement te gebruiken. In princpe komt dit toch op het zelfde neer als de Monitor class? Of zit daar echt een verschil in. Maar wat moet ik dan locken? De sortedlist, of de property Sortedlist.SyncRoot?
- Want dan kom ik gelijk op het volgende. Ik snap gewoon niet wat de functionaliteit van SyncRoot is. Het maakt een wrapper waarmee ik gesynchroniseerd de sortedlist item op een veilige manier kan aflopen?
- Dan heb je ook nog de mogelijkheid van ReaderWriterLock Class. Ik heb mij daar nog niet in verdiept maar zou dat een oplossing kunnen zijn?
Kortom, hoe moet ik met een SoredList omgaan die door meerdere threads worden bewerken/gelezen zonder conflicten (lezen en de SortedLis wordt tegelijkertijd bewerkt door een thread).