Go HowTo 101
Go Practices 101
Go Agg 101
Go 101 Blog
Three new books, Go Optimizations 101,
Go Details & Tips 101
and Go Generics 101
are published now.
It is most cost-effective to buy all of them through this book bundle
in the Leanpub book store.
Concurrency Synchronization Overview
This article will explain what are synchronizations
and list the synchronization techniques supported by Go.
What Are Concurrency Synchronizations?
Concurrency synchronizations means how to control concurrent computations (a.k.a., goroutines in Go)
to avoid data races between them,
to avoid them consuming CPU resources when they have nothing to do.
What Synchronization Techniques Does Go Support?
The article channels in Go
has shown that we can use channels to do synchronizations.
Besides using channels, Go also supports several other common synchronization techniques,
such as mutex and atomic operations.
Please read the following articles to get how to do synchronizations
with all kinds of techniques in Go:
We can also do synchronizations by making use of network and file IO.
But such techniques are very inefficient within a single program process.
Generally, they are used for inter-process and distributed synchronizations.
Go 101 will not cover such techniques.
To understand these synchronization techniques better,
it is recommended to know the memory order guarantees in Go.
The data synchronization techniques in Go will not prevent programmers from writing
improper concurrent code.
However these techniques can help programmers write correct concurrent code easily.
And the unique channel related features make concurrent programming flexible and enjoyable.
The digital versions of this book are available at the following places:
Individual donations via PayPal are also welcome.
Tapir, the author of Go 101, has been on writing the Go 101 series books
and maintaining the go101.org website since 2016 July.
New contents will be continually added to the book and the website from time to time.
Tapir is also an indie game developer.
You can also support Go 101 by playing Tapir's games
(made for both Android and iPhone/iPad):
Become Familiar With Go Code