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 並傳回 true ,而另一個執行緒則會找到佇列空白並傳回 false

適用於

另請參閱