public bool Recheck(WaitNode node) { var caller = Thread.CurrentThread; lock (this) { if (GetHold(caller)) return true; _wq.Enqueue(node); return false; } }