ConcurrentQueue<T>.TryDequeue(T) 方法

定义

尝试删除并返回并发队列开头的对象。

public:
 bool TryDequeue([Runtime::InteropServices::Out] T % result);
public bool TryDequeue(out T result);
member this.TryDequeue : 'T -> bool
Public Function TryDequeue (ByRef result As T) As Boolean

参数

result
T

此方法返回时,如果操作成功, result 则包含已删除的对象。 如果没有对象可供删除,则未指定该值。

返回

如果已成功删除并返回元素, 则为 ;否则为 >。

注解

ConcurrentQueue<T> 在内部处理所有同步。 如果两个线程在同一时刻调用 TryDequeue ,则两个线程都不会被阻止。 在两个线程之间检测到冲突时,一个线程必须重试以检索下一个元素,并在内部处理同步。

TryDequeue 尝试从队列中删除元素。 如果方法成功,则会删除该项,并且该方法返回 true;否则返回 false。 这在队列上的其他操作方面以原子方式发生。 如果队列填充了代码(例如 q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); ,两个线程同时尝试取消排队元素),则一个线程将取消排队 a ,另一个线程将取消 b排队。 两个调用 TryDequeue 都将返回 true,因为它们都能够取消对元素的排队。 如果每个线程返回到取消附加元素排队,则其中一个线程将取消 c 排队并返回 true,而另一个线程将找到队列为空并返回 false

适用于

另请参阅