Book Image

Effective Concurrency in Go

By : Burak Serdar
Book Image

Effective Concurrency in Go

By: Burak Serdar

Overview of this book

The Go language has been gaining momentum due to its treatment of concurrency as a core language feature, making concurrent programming more accessible than ever. However, concurrency is still an inherently difficult skill to master, since it requires the development of the right mindset to decompose problems into concurrent components correctly. This book will guide you in deepening your understanding of concurrency and show you how to make the most of its advantages. You’ll start by learning what guarantees are offered by the language when running concurrent programs. Through multiple examples, you will see how to use this information to develop concurrent algorithms that run without data races and complete successfully. You’ll also find out all you need to know about multiple common concurrency patterns, such as worker pools, asynchronous pipelines, fan-in/fan-out, scheduling periodic or future tasks, and error and panic handling in goroutines. The central theme of this book is to give you, the developer, an understanding of why concurrent programs behave the way they do, and how they can be used to build correct programs that work the same way in all platforms. By the time you finish the final chapter, you’ll be able to develop, analyze, and troubleshoot concurrent algorithms written in Go.
Table of Contents (13 chapters)


As this ebook edition doesn't have fixed pagination, the page numbers below are hyperlinked for reference only, based on the printed edition of this book.



debugging 184-186

asynchronous pipeline 96-98

atomicity 11, 15

atomic memory operations 161

compare and swap 163, 164

memory guarantees 161-163

atomic operation 13

atomics, practical uses

cancellations 168

change, detecting 169, 170

counters 165

heartbeat 165

progress meter 165-168


backend services 135-140

concurrency, limiting 143, 144

containerized backend services 137

HTTP and gRPC services 135

results, collecting 140-143

work, distributing 140-143


channels 30-43

closing 33

declaring 31-35

unbuffered channel 33

closure 28

as goroutines 29, 30

Coffman conditions 16

comma-separated values (CSV) 93

Communicating Sequential Processes (CSP) 2

compare-and-swap (CAS) operation 163, 164...