/// <summary> /// <see cref="ISync.Release"/> /// </summary> public override void Release() { for (; ;) { WaitQueue.WaitNode w = Signallee; if (w == null) { return; // no one to signal } if (w.signal(this)) { return; // notify if still waiting, else skip } } }