> -- captain cobalt писал(а):
> Атомарность последнего оператора IF и вызывает сомнения.

Всё что находится внутри блока BEGIN {EXCLUSIVE} ... END и есть атомарная операция над объектом. Хоть тысячу IF-ов там разместите, хоть миллион. Атомарность означает, что другая активность не будет впущена ни в один из эксклюзивных блоков кода данного объекта до тех пор пока уже впущенная активность не выйдет из эксклюзивного блока либо не уйдёт в спячку по AWAIT.