What problem does it solve? Choosing and correctly implementing concurrency in Ruby is hard: the GVL limits thread parallelism, Ractors impose strict object isolation, and synchronization bugs like race conditions and deadlocks are easy to introduce. This Skill provides expert guidance on picking the right concurrency primitive and implementing it correctly. ## Core Features & Use Cases - Concurrency Model Guidance: Explains GVL mechanics, M:N scheduling, and when threads, fibers, Ractors, or processes actually run in parallel. - Synchronization Patterns: Covers Mutex, ConditionVariable, Monitor, SizedQueue, Semaphore, and atomic types with deadlock-prevention rules. - concurrent-ruby & async: Documents Promises, thread pools, Concurrent::Map, Atom, and the Fiber Scheduler interface for non-blocking I/O. - Use Case: When parallelizing HTTP requests in a Rails background job, use this Skill to decide between threads and the async gem, then implement a worker pool with proper exception handling and graceful shutdown. ## Quick Start Ask how to safely parallelize an I/O-bound or CPU-bound Ruby task, for example how to fetch multiple URLs concurrently or share state between threads without race conditions.