> -- Илья Ермаков писал(а):
> Вообще говоря, семантика EXLUSIVE и AWAIT несколько различная - взаимное исклюение и синхронизация - видимо, оправдано было их разделить.

Семантика разная. Просто применение AWAIT внутри EXCLUSIVE у меня создает ощущения ломания структуры потока выполнения программы. Что-то типа вложенного в сишный switch условного оператора if, который может в себя включать отдельные case.

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

Если все процедуры эксклюзивны, то не ведет ли это к потере производительности из-за того, что часть кода, которая не модифицирует состояние никогда не будет выполняться параллельно?

> -- Илья Ермаков писал(а):
> Если бы вместо EXCLUSIVE был только AWAIT, то несколько идущих подряд AWAIT вызывали бы рекурсивную блокировку, а в какой момент освобождать каждый ее уровень?

Не понял. Откуда возникнет блокировка?