私はいくつかのマルチスレッド コードを保護しようとしており、以前に見られた破損を修正したことを証明するために単体テストを追加している最中です。
そうすることで、予期しない動作に遭遇しました。関数が排他ロックを達成した場合にのみ true を返す必要があるとドキュメントに示されているのに、次のコードが成功するのはなぜですか?TryEnter
const int msToWaitForLock = 1;
Object^ syncObj = gcnew Object();
bool gotLock = Threading::Monitor::TryEnter(syncObj, msToWaitForLock); // <-- this succeeds as expected
bool gotSecondLock = Threading::Monitor::TryEnter(syncObj, msToWaitForLock); // <-- but why the heck does this succeed?!