Learn Go facts and details by participating in some quizzes. NEW!

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)

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 Go 101 project is hosted on both Github and Gitlab. Welcome to improve Go 101 articles by submitting corrections for all kinds of mistakes, such as typos, grammar errors, wording inaccuracies, description flaws, code bugs and broken links.

If you would like to learn some Go details and facts every serveral days, please follow Go 101's official Twitter account: @go100and1.

The digital versions of this book are available at the following stores and forms: Tapir, the author of Go 101, has spent 3+ years on writing the Go 101 book and maintaining the go101.org website. New contents will continue being added to the book and the website from time to time. If you would like to, you can support the book and the website by making a donation through Paypal ($5, $9, $15, or $25) or buying Tapir a coffee (way 1 and way 2).

You can also support Go 101 by playing Tapir's games.
Cryptocurrency donations are welcome too:
Bitcoin: 1xucQbv5jujFPPwhyg395ri5yV71hx9g9
Ethereum: 0x5dc4aa2c2bbfaadae373dadcfca11b3358912212