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 會包含移除的物件。 如果沒有可移除的物件,值會是 unspecified。

傳回

如果成功移除及傳回在 ConcurrentQueue<T> 開頭的元素則為 true,否則為 false

備註

ConcurrentQueue<T> 在內部處理所有同步處理。 如果兩個線程在完全相同的時間呼叫 TryDequeue ,則兩個作業都不會遭到封鎖。 在兩個線程之間偵測到衝突時,一個線程必須再試一次以擷取下一個專案,並在內部處理同步處理。

TryDequeue 會嘗試從佇列中移除專案。 如果方法成功,則會移除項目並傳回 方法,否則會傳falsetrue。 這在佇列上以不可部分完成的方式執行其他作業。 如果佇列已填入程序代碼,例如 q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c"); 和 兩個線程同時嘗試取消佇列某個元素,則一個線程將會取消佇列 a ,另一個線程將會取消佇列 b。 兩個 對的呼叫 TryDequeue 都會傳回 true,因為它們都能夠取消佇列專案。 如果每個線程回到取消佇列其他元素,其中一個線程會取消佇列c並傳回 ,而另一個線程則會發現佇列空白,並傳回 truefalse

適用於

另請參閱