> -- Сергей Губанов писал(а):
> Вообще-то, в приведённой Вами записи EXCWAIT выглядела как процедура.

Под EXCWAIT я понимаю комбинацию EXCLUSIVE и AWAIT. Этой комбинации соответствует определенная область действия.

> -- Vlad писал(а):
> Я бы хотел в данном случае видеть декомпозицию на две отдельных функции, которые совершают законченные действия с объектом.

Я тут еще подумал... В идеале вообще хотелось бы инкапсулировать логику блокировок и эксклюзивного выполнения от всего остального. Т.е., вот этот пример:

## Код:
```
BEGIN{EXCLUSIVE}
  f1;
  AWAIT(enter);
  f2;
  AWAIT(exit);
  f3;
END;
```


Я бы хотел видеть так:

## Код:
```
BEGIN
  f1;
  o.Enter();
  f2;
  o.Exit();
  f3;
END;
```


Где Enter/Exit - эксклюзивно-условные методы объекта o. Все остальные методы, не помеченные как эксклюзивно-условные, подразумевают возможность параллельного выполнения.