TryDequeueで重労働を実行する実際のコードはどこで確認できますか?私はF12(Go To Definition)を試しましたが、メソッド名とパラメータだけを試しました。ConcurrentQueue TryDequeueの実装はどこですか
lock (this)
{
T overflow;
while (q.Count > Limit && q.TryDequeue(out overflow)) ;
}
TryDequeueで重労働を実行する実際のコードはどこで確認できますか?私はF12(Go To Definition)を試しましたが、メソッド名とパラメータだけを試しました。ConcurrentQueue TryDequeueの実装はどこですか
lock (this)
{
T overflow;
while (q.Count > Limit && q.TryDequeue(out overflow)) ;
}
reference sourceを表示できます。 ConcurrentQueue
のまわりでロックしないことを強くお勧めします、それは目的を破ります。その場合にはQueue
がはるかに高速になります。
ConcurrentQueue
は、.NETフレームワークのクラスです。そのため、グローバルアセンブリキャッシュのバイナリとしてシステム上で使用できます。つまり、ソースコードなしで提供されます。あなたのタブのタイトルには、[メタデータから]という発言が表示されます。つまり、自動生成されたソースです。
マイクロソフトが提供するreference sourceをオンラインで確認できます。 ILSpyまたはリフレクタのような逆コンパイラを使用することもできます。
これは、あなたが 'ConcurrentQueue'を使う方法ではありません。ロックしたり、カウントをチェックしたりしないでください。 'TryDeque'が' true'を返す場合には、デキューして値を使用してください。 – Sefe
カウントをチェックしないと、すべての反復でアイテムが追加され、ネットゼロのアイテムに対して削除されます。私はカウントを削除しましたが、項目が増えませんでした。 – KeelRisk