public override void Signal() { AssertOwnership(); for (;;) { var w = _wq.Dequeue(); if (w == null) return; // no one to signal if (w.Signal(_sync)) return; // notify if still waiting, else skip } }