четверг, 7 февраля 2019 г.

Go FAQ: Почему параллелизм в Go построен на идеях CSP?

Параллельное и многопоточное программирование со временем получило репутацию трудности. Создатели Go считают, что это отчасти связано со сложными проектами, такими как pthreads и частично из-за переоценки деталей низкого уровня таких как мьютексы, условные переменные и барьеры памяти. Интерфейсы более высокого уровня позволяют писать гораздо более простой код, даже если мьютексы и тому подобное присутствует под капотом.

Одна из самых успешных моделей для обеспечения высокоуровневой языковой поддержки параллелизма основана на взаимодействующих последовательных процессах Хора (Hoare's Communicating Sequential Processes), или CSP. Occam и Erlang - два хорошо известных языка, которые используют CSP. Примитивы параллелизма Go происходят из другой части родословной, чей основной вклад - мощное понятие каналов как первоклассных объектов. Опыт работы создателей Go с несколькими более ранними языками показал, что модель CSP хорошо вписывается в процедурные языковые рамки.


Читайте также:


Комментариев нет:

Отправить комментарий