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
。
適用於
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應