> -- Vlad писал(а):
> Почему невозможно? Вот:

Это совсем не то. Здесь выход из ожидания произойдёт тогда когда кто-то установит переменную не_хотим_ждать в TRUE, а предложенный мной код подразумевает, что мы должны ждать только (надоело_ждать OR condition), в то время как переменная не_хотим_ждать после начала ожидания нас больше не интересует. Она нужна только для входа в ожидание, но не для выхода из него.

Более того, этот код содержит ошибку: значение переменной condition внутри EXCWAIT может быть не равно её же значению в следующей после неё инструкции IF condition THEN, поскольку между выполнениями этих двух инструкций значение переменной condition могло быть изменено другим потоком. Для того чтобы значение переменной condition не изменялось между этими инструкциями нужно чтобы они обе выполнялись внутри одного и того же эксклюзивного блока, т.е. атомарно.

Вот ещё простой пример, который нельзя переписать с помощью EXCWAIT:
## Код:
```
BEGIN{EXCLUSIVE}
  ...
  AWAIT(enter);
  ...
  AWAIT(exit);
  ...
END;
```
