Is the go map structure thread-safe?

Issue

Is the Go map type thread safe? I have a program that has many goroutines reading and writing to a map type. If I need to implement a protection mechanism, what’s the best way to do it?

Solution

You’d want to use goroutines and synchronize access to your maps via channels. Explanation from the FAQ:

After long discussion it was decided that the typical use of maps did
not require safe access from multiple threads, and in those cases
where it did, the map was probably part of some larger data structure
or computation that was already synchronized. Therefore requiring that
all map operations grab a mutex would slow down most programs and add
safety to few. This was not an easy decision, however, since it means
uncontrolled map access can crash the program.

The language does not preclude atomic map updates. When required, such
as when hosting an untrusted program, the implementation could
interlock map access.

Answered By – Jonathan Feinberg

Answer Checked By – Pedro (GoLangFix Volunteer)

Leave a Reply

Your email address will not be published.