Мда, забыл уже, долго соображал...

Вроде как при реализации монитора на базе семафоров обычно делают очередь ждущих объектов - и каждому выделяется свой семафор. Иначе ждущие будут пробуждаться в произвольном порядке, а не в том, в котором стали на ожидание. Я в соседней ветке выкладывал исходник модуля Ao. Там Ao.Monitor - это монитор, донавороченный до аналогии с Активным оберономviewtopic.php?p=4863#p4863