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