Sobes.tech
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.