> -- Илья Ермаков писал(а):
> Вроде как при реализации монитора на базе семафоров обычно делают очередь ждущих объектов - и каждому выделяется свой семафор. Иначе ждущие будут пробуждаться в произвольном порядке, а не в том, в котором стали на ожидание. Я в соседней ветке выкладывал исходник модуля Ao. Там Ao.Monitor - это монитор, донавороченный до аналогии с Активным обероном
Там какая-то чёрная магия. Я её не понимаю.

Даже если делать очередь вручную (не перекладывая это на плечи ОС), всё равно нужно уметь как-то атомарным образом покидать эксклюзивный блок и незамедлительно засыпать на ожидании условного сигнала (т.е. выполнять аналог SignalAndWait). Как без этого?