Доклад «Конкурентные паттерны из Go на Ruby» на BRUG 2016

Belarus ruby user group 2016 ivan shamatov
Belarus ruby user group 2016 ivan shamatov

Традиционная модель многопоточности (обычно используемая в java, c++, python) требует от программиста налаживать коммуникацию между потоками через общую память. В этом случае доступ к общей памяти ограничивается локами (thread-safe структурами данных), которые не позволят изменять данные двум потокам одновременно.

Язык Go предлагает интересную концепцию структурирования конкурентных приложений. В качестве примитивов в языке встроены go-рутины и каналы. Вместо явного использования локов для доступа к данным, go предлагает использовать каналы для обмена ссылками на данные. Тем самым обеспечивается доступ только одной go-рутины к данным в этот момент времени.

Авторы библиотеки concurrent-ruby проделали огромную работу и собрали лучшие практики и паттерны из различных языков (Erlang, Clojure, Scala, Haskell, F#, C#, Java), касающиеся конкурентности. В этом докладе мы рассмотрим некоторые паттерны, которые появились именно благодаря языку go, его примитивам и концепции "Share by communicating" в имплементации на ruby.


Наконец-то решил заняться самообразованием?

Тогда начни с нашего бесплатного путеводителя по миру веб-разработки. Внутри куча полезных советов и материалов для самостоятельного изучения.

Заполучить книгу Cover huge ru