Является ли структура go map поточно-ориентированной?
Безопасен ли тип карты Go? У меня есть программа, которая имеет много операций чтения и записи в тип карты. Если мне нужно реализовать механизм защиты, каков наилучший способ сделать это?
2 ответа
Вы хотели бы использовать процедуры и синхронизировать доступ к вашим картам по каналам. Объяснение из FAQ:
После продолжительного обсуждения было решено, что типичное использование карт не требует безопасного доступа из нескольких потоков, и в тех случаях, когда это было необходимо, карта, вероятно, была частью некоторой более крупной структуры данных или вычислений, которые уже были синхронизированы. Поэтому требование, чтобы все операции с картами захватывали мьютекс, замедляло бы большинство программ и повышало безопасность немногих. Однако это было непростое решение, поскольку это означает, что неконтролируемый доступ к карте может привести к сбою программы.
Язык не исключает обновления атомных карт. При необходимости, например, при размещении ненадежной программы, реализация может блокировать доступ к карте.