ConcurrentBag в C#
Класс ConcurrentBag хранит элементы так, чтобы потоки меньше спорили за одну вершину: у каждого потока свой локальный запас. Это набор без обещанного порядка.
Порядок извлечения не совпадает с порядком добавления. Набор подходит, когда важно собрать элементы, а не сохранить очередь.
Добавим число 3 и сразу снимем его. Первая строка в консоли - True, снятие удалось. Вторая строка - само число 3:
using System.Collections.Concurrent;
ConcurrentBag<int> bag = new();
bag.Add(3);
Console.WriteLine(bag.TryTake(out int v)); // выведет True
Console.WriteLine(v); // выведет 3
Добавьте в набор числа 8 и 9. Снимите одно значение и выведите в консоль, удалось ли снятие, и само значение.