TryDequeue
TryDequeue у
ConcurrentQueue
работает по FIFO: после
Enqueue
1 и 2 первым снимается 1.
Пустая очередь даёт false.
Тип безопасен для нескольких потоков;
примеры - один поток.
Синтаксис
bool ok = queue.TryDequeue(out T item);
Пример
Давайте снять первый элемент:
using System;
using System.Collections.Concurrent;
class Program
{
static void Main()
{
ConcurrentQueue<int> queue = new ConcurrentQueue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
bool ok = queue.TryDequeue(out int res);
Console.WriteLine(ok);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
1
Пример
Давайте снять второй элемент:
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 _);
queue.TryDequeue(out int res);
Console.WriteLine(res);
}
}
Результат выполнения кода:
2
Пример
Давайте вызвать TryDequeue для пустой очереди:
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
Смотрите также
-
TryPeek,
без снятия -
Enqueue,
добавление в хвост -
ConcurrentQueue,
класс очереди -
TryPop,
снятие со стопки