Windows ロック (ミューテックス、クリティカル セクション) と .Net モニター (C# では、ブロックの入力/終了の構文シュガーとしてキーワード lock を使用できます) を混同していると思います。
Windows のミューテックスとクリティカル セクションは、開始および終了することしかできません。つまり、それらに関連付けられているキューは 1 つだけです。キュー内のすべてのスレッドはロックが解放されるのを待ち、解放されると、キュー内の次のスレッドがロックを制御して実行を開始します。これはすべて自動的に行われます。現在ロックを保持しているスレッドは、これに関与していません。ロックが解放されるのを待っている 1 つ以上の他のスレッドをウェイクアップすることはできません。
.Net の Monitor には、準備完了キューと待機キューの 2 つのキューがあります。
レディ キューは、Win32 Mutex またはクリティカル セクション キューとまったく同じように動作し、Enter/Leave メソッドを使用して制御されます。
待機キューは、Wait/Pulse/PulseAll メソッドを使用して制御される個別のキューです。これらのメソッドは、モニターを保持しているスレッドによってのみ呼び出すことができます。スレッドが Wait を呼び出すと、Monitor が解放され、待機キューに入ります。次に、別のスレッドが Pulse を呼び出して 1 つのスレッドを移動するか、Pulse All を呼び出してすべてのスレッドを待機中から準備完了キューに移動できます (Pulse/PulseAll を呼び出すスレッドが Monitor を保持していることを思い出してください)。
コンピューター サイエンスの観点からは、モニターは同期スレッドに必要な単一のプリミティブです (セマフォ、イベント、ミューテックス、バリアなどはすべてモニターで実装できます)。実用的な観点からは、モニターはミューテックスとして、また次のような状況で役立ちます。アクションは、ロックステップで 2 つのスレッドによって実行される必要があります。ただし、ほとんどの場合、イベントを使用するとコードが読みやすくなります。
参考文献:
ウィキペディアの歴史的 / コンピューター サイエンスの側面のモニターに関するページ
MSDN モニター クラス