Mastering Concurrency in Go
Discover and harness Go's powerful concurrency features to develop and build fast, scalable network systems
- Explore the core syntaxes and language features that enable concurrency in Go
- Understand when and where to use concurrency to keep data consistent and applications non-blocking, responsive, and reliable
- A practical approach to utilize application scaffolding to design highly-scalable programs that are deeply rooted in go routines and channels
This book will take you through the history of concurrency, how Go utilizes it, how Go differs from other languages, and the features and structures of Go's concurrency core. Each step of the way, the book will present real, usable examples with detailed descriptions of the methodologies used. By the end, you will feel comfortable designing a safe, data-consistent, high-performance concurrent application in Go.
The focus of this book is on showing you how Go can be used to program high-performance, robust concurrent programs with Go's unique form of multithreading, which employs goroutines that communicate and synchronize across channels. Designed for any curious developer or systems administrator with an interest in fast, non-blocking, and resource-thrifty systems applications, this book is an invaluable resource to help you understand Go's powerful concurrency focus.
What you will learn from this book
- Create goroutines as the building blocks of concurrency in Go
- Extend the goroutines to include channels to open up communication
- Design concurrent patterns to apply toward our examples and future applications
- Explore methods to ensure data consistency remains paramount in concurrent and multi-core Go applications
- Tune performance to squeeze the most out of existing hardware to keep your applications below resource thresholds
- Utilize advanced concurrency patterns and best practices to stay low-level without compromising the simplicity of Go itself
- Build several servers in Go that strongly utilize concurrency features
A practical approach covering everything you need to know to get up and running with Go, starting with the basics and imparting increasingly more detail as the examples and topics become more complicated. The book utilizes a casual, conversational style, rife with actual code and historical anecdotes for perspective, as well as usable and extensible example applications.
Who this book is written for
This book is intended for systems developers and programmers with some experience in either Go and/or concurrent programming who wish to become fluent in building high-performance applications that scale by leveraging single-core, multicore, or distributed concurrency.