Effective Concurrency in Go Develop, Analyze, and Troubleshoot High Performance Concurrent Applications with Ease

Gain a deep understanding of concurrency and learn how to leverage concurrent algorithms to build high-throughput data processing applications, network servers and clients that scale. Key Features Learn about the Go concurrency primitives, Go memory model, and common concurrency patterns Develop the...

Descripción completa

Detalles Bibliográficos
Autor principal: Serdar, Burak (-)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham : Packt Publishing, Limited 2023.
Edición:1st ed
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009742736706719
Tabla de Contenidos:
  • Cover
  • Title Page
  • Copyright and Credit
  • Dedicated
  • Contributors
  • Table of Contents
  • Preface
  • Chapter 1: Concurrency - A High-Level Overview
  • Technical Requirements
  • Concurrency and parallelism
  • Shared memory versus message passing
  • Atomicity, race, deadlocks, and starvation
  • Summary
  • Question
  • Further reading
  • Chapter 2: Go Concurrency Primitives
  • Technical Requirements
  • Goroutines
  • Channels
  • Mutex
  • Wait groups
  • Condition variables
  • Summary
  • Questions
  • Chapter 3: The Go Memory Model
  • Why a memory model is necessary
  • The happened-before relationship between memory operations
  • Synchronization characteristics of Go concurrency primitives
  • Package initialization
  • Goroutines
  • Channels
  • Mutexes
  • Atomic memory operations
  • Map, Once, and WaitGroup
  • Summary
  • Further reading
  • Chapter 4: Some Well-Known Concurrency Problems
  • Technical Requirements
  • The producer-consumer problem
  • The dining philosophers problem
  • Rate limiting
  • Summary
  • Chapter 5: Worker Pools and Pipelines
  • Technical Requirements
  • Worker pools
  • Pipelines, fan-out, and fan-in
  • Asynchronous pipeline
  • Fan-out/fan-in
  • Fan-in with ordering
  • Summary
  • Questions
  • Chapter 6: Error Handling
  • Error handling
  • Pipelines
  • Servers
  • Panics
  • Summary
  • Chapter 7: Timers and Tickers
  • Technical Requirements
  • Timers - running something later
  • Tickers - running something periodically
  • Heartbeats
  • Summary
  • Chapter 8: Handling Requests Concurrently
  • Technical Requirements
  • The context, cancelations, and timeouts
  • Backend services
  • Distributing work and collecting results
  • Semaphores - limiting concurrency
  • Streaming data
  • Dealing with multiple streams
  • Summary
  • Chapter 9: Atomic Memory Operations
  • Technical Requirements
  • Memory guarantees
  • Compare and swap.
  • Practical uses of atomics
  • Counters
  • Heartbeat and progress meter
  • Cancellations
  • Detecting change
  • Summary
  • Chapter 10: Troubleshooting Concurrency Issues
  • Technical Requirements
  • Reading stack traces
  • Detecting failures and healing
  • Debugging anomalies
  • Summary
  • Further reading
  • Index
  • Other Books You May Enjoy.