This repo is my personal knowledge base on goroutines and concurrency in Go. It includes notes and examples to help quickly understand these concepts and build concurrent programs.
- π Fundamentals: Processes, Threads, OS concepts.
- βοΈ Go Scheduler: How the Go runtime manages goroutines.
- π Comparison: Concurrency, parallelism, async programming.
- π Goroutines: Lightweight threads in Go.
- β³ WaitGroup: Coordinating goroutine completion.
- π‘ Channels: Communication between goroutines.
- π Mutex: Mutual exclusion for critical sections.
- β‘ Atomic: Low-level atomic operations.
- π£ Cond: Signaling between goroutines.
- π Once: Ensuring a task runs only once.
- π Pool: Reusable object pools.
- πΊοΈ Map: Concurrent-safe maps.
- π Context: Managing deadlines, cancellations.
- π¬ Select Statement: Handling multiple channel operations.
- π Deadlock: Detecting and avoiding deadlocks.
β οΈ Data Race: Understanding and fixing data races.
- β Cancellation: Graceful task cancellation.
- β‘οΈ Fan-out: Distributing tasks to workers.
- β¬ οΈ Fan-in: Aggregating results from workers.
- π Fan-out & Fan-in: Combining fan-out and fan-in.
- π Pipeline: Processing data through stages.
- π¦ Semaphore: Controlling access to limited resources or tasks.
- π‘ Pub/Sub: Message broadcasting between publishers and subscribers.
π‘ Feel free to explore, contribute, and improve this knowledge base!