ConcurrentQueue<T>.TryDequeue(T) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
嘗試移除並傳回位在並行佇列開頭的物件。
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 會嘗試從佇列中移除專案。 如果方法成功,則會移除項目並傳回 方法,否則會傳false
回 true
。 這在佇列上以不可部分完成的方式執行其他作業。 如果佇列已填入程序代碼,例如 q.Enqueue("a"); q.Enqueue("b"); q.Enqueue("c");
和 兩個線程同時嘗試取消佇列某個元素,則一個線程將會取消佇列 a
,另一個線程將會取消佇列 b
。 兩個 對的呼叫 TryDequeue 都會傳回 true
,因為它們都能夠取消佇列專案。 如果每個線程回到取消佇列其他元素,其中一個線程會取消佇列c
並傳回 ,而另一個線程則會發現佇列空白,並傳回 true
false
。