Существует не менее трех известных подходов к созданию параллельных приложений:
-
Многопоточность и синхронизация памяти с помощью блокировки (.NET, Java). Программная транзакционная память (текст ссылки) - еще один подход к синхронизации.
-
Передача асинхронного сообщения (Erlang).
Я хотел бы узнать, есть ли другие подходы и обсудить различные плюсы и минусы этих подходов, применяемых к крупным распределенным приложениям. Основное внимание уделено упрощению жизни программиста.
Например, на мой взгляд, использование нескольких потоков легко, когда между ними нет зависимостей, что довольно редко. Во всех остальных случаях код синхронизации потоков становится довольно громоздким и трудно отлаживать и рассуждать.