コードインスペクション:同期プリミティブに対する疑わしいロック操作
このインスペクションは、 SemaphoreSlim、 ManualResetEvent、 ReaderWriterLockSlim などの同期プリミティブをロックオブジェクトとして使用する lock ステートメントを報告します。 これらのオブジェクトはすでに独自の同期セマンティクスを持っているため、これらのオブジェクトでロックを行うのは疑わしいです。 lock をこれらのオブジェクトと混在させると混乱を招き、スレッド関連のバグを隠蔽する可能性があります。
サンプル
using System.Threading;
class C
{
private readonly SemaphoreSlim myGate = new(1, 1);
void M()
{
lock (myGate)
{
DoWork();
}
}
}
using System.Threading;
class C
{
private readonly object myLock = new();
void M()
{
lock (myLock)
{
DoWork();
}
}
}
2026 年 6 月 12 日