Junior — Middle
Kun je de belangrijkste collecties opsommen en uitleggen die bedoeld zijn voor gebruik in een multithread-omgeving?
sobes.tech AI
Antwoord van AI
In C# voor werken in een multithread-omgeving zijn er speciale collecties uit de namespace System.Collections.Concurrent. Deze bieden thread-veilige toegang zonder handmatige synchronisatie. De belangrijkste zijn:
- ConcurrentDictionary<TKey, TValue> — thread-veilige woordenboek dat gelijktijdig lezen en schrijven mogelijk maakt.
- ConcurrentQueue<T> — thread-veilige wachtrij met operaties voor toevoegen aan het einde en verwijderen van het begin.
- ConcurrentStack<T> — thread-veilige stapel met push/pop-operaties.
- ConcurrentBag<T> — collectie voor het opslaan van objecten zonder strikte volgorde, geoptimaliseerd voor parallel toevoegen en verwijderen.
- BlockingCollection<T> — wrapper rond andere collecties die blokkerende operaties voor toevoegen en verwijderen ondersteunt, handig voor producer-consumer scenario's.
Voorbeeld van gebruik van ConcurrentDictionary:
var dict = new ConcurrentDictionary<int, string>();
dict.TryAdd(1, "één");
string value;
if (dict.TryGetValue(1, out value))
{
Console.WriteLine(value); // output: één
}
Deze collecties maken het veilig werken met gegevens uit verschillende threads mogelijk zonder expliciete locks.