Concurrency in .NET can be confusing with many options available. async/await is the best choice for most I/O tasks like reading files or calling APIs. Channels make it easy to manage work queues between producers and consumers. Akka.NET helps with complex state machines and managing many independent entities. The goal is to avoid shared mutable state and locks whenever possible.
This guide helps you pick the right tool for your situation. Start simple with async/await. Only move to Channels, Reactive Extensions, or Akka.NET when you have a specific need they solve better. Remember that locks should be a last resort after trying immutability, message passing, and concurrent collections.
Global
mkdir -p ~/.claude/skills/csharp-concurrency-patternsProject
mkdir -p .claude/skills/csharp-concurrency-patternsSource Repository
Typescript Advanced Typeswshobson/agents
Master advanced TypeScript types for safer and more flexible code
Python Executorqu-skills/skills
Execute Python code safely with 100+ libraries for data, scraping, and media
Golang Error Handlingsamber/cc-skills-golang
Learn to create, wrap, inspect, and log Go errors like a professional engineer
Golang Performancesamber/cc-skills-golang
Speed up your Go code using proven patterns for allocation reduction and CPU efficiency
Golang Design Patternssamber/cc-skills-golang
Idiomatic Go patterns for clean constructors error handling and graceful shutdown
Golang Concurrencysamber/cc-skills-golang
Write safe Go concurrency with goroutines, channels, and sync primitives
Golang Contextsamber/cc-skills-golang
Master Go context for cancellations, timeouts, and request values
Golang Data Structuressamber/cc-skills-golang
Optimize Go data structures for speed and memory efficiency with internals knowledge