Вы можете просто использовать ConcurrentQueue
и перед вызовом Enqueue
проверить, находятся ли данные в очереди, вызвав метод ConcurrentQueue.Contains<>
. Я предполагаю, что метод расширения Contains<>
довольно хорошо оптимизирован.
EDIT:
Как уже отмечали другие, чтобы это работало, вам бы пришлось использовать механизм блокировки, такой как мьютекс и т. Д. Вокруг метода Contains<>
и метода Enqueue
, например:
* * 1010