無名ミューテックスを作成することを考慮すると、各スレッドは名前のないミューテックスを作成し、作成時に所有権を引き継ぎます。各スレッドには独自のミューテックスがあるため、すべてのスレッドを並列に実行できます。
名前を付けたくない場合は、すべてのスレッドに対してmutexを一度作成する必要があります。あなたのコードを見て、ミューテックスの作成が成功したかどうかもチェックしてください。
次に、複数のスレッドから呼び出される関数では、以前に作成されたmutexのWaitForSingleObjectを呼び出します。
ミューテックスの所有権があるか、またはミューテックスが放棄されたため待機が終了したために返された場合、返された結果を確認してください。
オーナーシップを持っている場合は、必ずミューテックスハンドルでReleaseMutexを呼び出してください。おそらく、例外が発生したとき、またはReleaseMutexの前にreturn文が挿入されたときにmutexが適切に解放されることを確認するために、RAIIを使用してmutexを管理することを考えてください。
ミューテックスが不要になったときに、MutexHandleでCloseHandleを呼び出すことを必ず確認してください。ミューテックスを使用する方法を示す例
はこちらを参照してください。基本的なマルチスレッドラップのために"Using Mutex Objects"
はここを参照してください:あなたは、このロックがためである場合は、クリティカルセクションを持つ方が良いだろうとUsing Threads
実現しますか単一のプロセス内のスレッド? –