Locking serves as a construct which is used to enable writes from several
threads or goroutines to the same data structures, to avoid concurrency issues.
Imagine if every thread would read a value, add something to this value and
then write the value back to the shared data structures - we expect in the
best case to lose what we added in some routine, and we have to use a lock
to avoid this.