? (или можно ссылки на статьи)
потому что они не синхронизированы
Если создать 2 горутины и в них в цикле в обоих писать в общую мапу, то получите панику. Но на самом деле это с любыми типами нельзя делать, просто только для мап разрабы явно кидают паники https://golangforall.com/ru/post/golang-data-handling-concurrent-programs.html
потому, что на каждую запись может произойте перестроение мапы, и те, кто это не отследит, будут читать-писать по адресам, более не актуальным
и не только мапы. есть такое явление как race condition. любая статья про race condition подойдет для начала. вкратце Под гонкой условий (Condition Race), которую также называют гонкой данных (Data Race) понимают ситуацию, когда два или более потока соперничают за обладание некоторым общим ресурсом. Чаще всего соперничество возникает из-за такого ресурса как оперативная память. Но таковым ресурсом может быть и внешняя память (работа с одним и тем же файлом, например), или некоторое устройство, подключенное к компьютеру. Для возникновения соперничества хотя бы один поток должен изменять ресурс. В книге "Язык программирования Go" Донована хороший пример с банком.
Обсуждают сегодня