Является ли структура карты go-thread безопасной?

Является ли тип типа карты Go безопасным? У меня есть программа, в которой есть много goroutines, которые читают и записывают в тип карты. Если мне нужно реализовать механизм защиты, какой лучший способ это сделать?

Ответ 1

Вы хотите использовать goroutines и синхронизировать доступ к вашим картам через channels. Объяснение из FAQ:

После долгого обсуждения было решено, что типичное использование карт не требуют безопасного доступа из нескольких потоков, и в этих случаях где это было сделано, карта, вероятно, была частью некоторой более крупной структуры данных или вычисление, которое уже было синхронизировано. Поэтому, требуя, чтобы все операции с картами захватить мьютекс замедлят большинство программ и добавляют безопасность для немногих. Однако это было непростым решением, поскольку это означает неконтролируемый доступ к карте может привести к сбою программы.

Язык не исключает обновления атомной карты. При необходимости такие так как при размещении ненадежной программы реализация может блокировка доступа к карте.