ConcurrentBag
ConcurrentBag<T> безопасна
для нескольких потоков. Порядок
TryTake
не фиксирован - в примерах не утверждаем,
какое число снимется первым. Добавление -
Add.
Примеры - один поток.
Синтаксис
ConcurrentBag<int> bag = new ConcurrentBag<int>();
Пример
Давайте положить два числа:
using System;
using System.Collections.Concurrent;
class Program
{
static void Main()
{
ConcurrentBag<int> bag = new ConcurrentBag<int>();
bag.Add(1);
bag.Add(2);
Console.WriteLine(bag.Count);
}
}
Результат выполнения кода:
2
Пример
Давайте опустошить мешок через TryTake:
using System;
using System.Collections.Concurrent;
class Program
{
static void Main()
{
ConcurrentBag<int> bag = new ConcurrentBag<int>();
bag.Add(1);
bag.Add(2);
bag.TryTake(out _);
bag.TryTake(out _);
Console.WriteLine(bag.IsEmpty);
}
}
Результат выполнения кода:
True
Пример
Давайте проверить пустой мешок:
using System;
using System.Collections.Concurrent;
class Program
{
static void Main()
{
ConcurrentBag<int> bag = new ConcurrentBag<int>();
bool res = bag.TryTake(out _);
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Смотрите также
-
Add,
положить элемент -
TryTake,
забрать элемент -
ConcurrentQueue,
очередь FIFO -
ConcurrentStack,
стопка LIFO