пятница, 15 февраля 2019 г.

Go FAQ: Какие операции атомарные? Как насчет мьютексов?

Описание атомарности операций в Go можно найти в описании модели памяти Go.

Низкоуровневая синхронизация и атомарные примитивы доступны в sync и sync/atomic пакетах. Эти пакеты хороши для простых задач, таких как увеличение значения счетчика ссылок или гарантирование небольшого взаимного исключения.

Для операций более высокого уровня, таких как координация между одновременными серверами, высоко-уровневые техники могут привести к более приятным программам, и Go поддерживает этот подход через его go-процедуры (goroutines) и каналы. Например, вы можете структурировать вашу программу так, чтобы только одна go-процедура (goroutine) одновременно несет ответственность за конкретную часть данных. Этот подход обобщен оригинальным Go высказыванием:

Не общайтесь, разделяя память. Вместо этого делитесь памятью, общаясь.

Большие параллельные программы, вероятно, могут использовать преимущества обоих этих наборов инструментов.


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


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

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