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 被移除的物件。 若無物件可移除,該值未指定。

傳回

true 若元素被移除並從 成功返回 ConcurrentQueue<T> ;否則, false

備註

ConcurrentQueue<T> 所有同步皆由內部處理。 如果兩個執行緒在完全相同的時刻呼叫 TryDequeue ,則兩個操作都不會被阻塞。 當偵測到兩個執行緒間發生衝突時,其中一個執行緒必須重新嘗試取回下一個元素,同步則由內部處理。

TryDequeue 嘗試從佇列中移除元素。 若方法成功,該項目將被移除並返回 true;否則,返回 false。 這是在佇列中其他操作原子層面上發生的。 如果佇列中填充了像 和 q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); 這樣的程式碼,兩個執行緒同時嘗試將元素出隊,一個執行緒會出隊 a ,另一個執行緒會去排隊 b。 兩個呼叫 TryDequeue 都會回傳 true,因為它們都成功將元素出隊。 如果每個執行緒回去排隊一個額外元素,其中一個執行緒會去排 c 隊並回傳 true,而另一執行緒會發現該佇列為空並回傳 false

適用於

另請參閱