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