Ясно, что присутствует.
Однако модель программирования ориентирована на общую память. На мелкогранулярный параллелизм над ней.

В чём сложнее - не совсем понял. Сложнее обеспечить? Ну, ничего особенно сложного - достаточно простые механизмы у активных объектов. Ну и хорошо, что не сложно, а то была бы лишняя претензия к этим активным объектам

Моя позиция - не надо мне в одном объектном пространстве многих потоков. Как только допускаем, имеем всем известные проблемы; а как только рискнём сказать - "а у нас не будет никогда многих потоков в одном объектном пространстве" - так начинаем свободней проектировать архитектуру, использовать простые и эффективные паттерны с глобальными объектами и т.п.
Как пример: в А2 возникли сразу проблемы с командами (в дисере описаны у них), что-то там передавать через глобальный контекст стало нельзя... Пришлось вымучивать потокобезопасные механизмы.
Ради чего?

То, что у меня параллельно, я развяжу настолько, что оно будет выполняться даже на разных машинах. А то, что внутри одного компонента, я напишу последовательно, не имея геморроя. Опять же, можно иметь асинхронную логику, логический параллелизм внутри одного потока (для логического удобства, но без проблем с физической атомарностью). Опять же, можно иметь таки одно адресное пространство для обмена большими кусками данных, но без пересечения объектных пространств.