2017-01-29 15 views
1

TryDequeueで重労働を実行する実際のコードはどこで確認できますか?私はF12(Go To Definition)を試しましたが、メソッド名とパラメータだけを試しました。ConcurrentQueue TryDequeueの実装はどこですか

lock (this) 
{ 
    T overflow; 
    while (q.Count > Limit && q.TryDequeue(out overflow)) ; 
} 
+1

これは、あなたが 'ConcurrentQueue'を使う方法ではありません。ロックしたり、カウントをチェックしたりしないでください。 'TryDeque'が' true'を返す場合には、デキューして値を使用してください。 – Sefe

+0

カウントをチェックしないと、すべての反復でアイテムが追加され、ネットゼロのアイテムに対して削除されます。私はカウントを削除しましたが、項目が増えませんでした。 – KeelRisk

答えて

1

reference sourceを表示できます。 ConcurrentQueueのまわりでロックしないことを強くお勧めします、それは目的を破ります。その場合にはQueueがはるかに高速になります。

1

ConcurrentQueueは、.NETフレームワークのクラスです。そのため、グローバルアセンブリキャッシュのバイナリとしてシステム上で使用できます。つまり、ソースコードなしで提供されます。あなたのタブのタイトルには、[メタデータから]という発言が表示されます。つまり、自動生成されたソースです。

マイクロソフトが提供するreference sourceをオンラインで確認できます。 ILSpyまたはリフレクタのような逆コンパイラを使用することもできます。

関連する問題