CRuby threads don't give you real parallelism, the GVL blocks it.
Briefly

"Ractors (Ruby 3.0+) fix this by holding a GVL per ractor, not one global lock."
"The catch: objects can't be shared freely. That's not a bug, it's the guarantee that makes data races impossible between ractors."
Ractors provide parallel execution in Ruby 3.0+ without relying on a single global lock. Instead of one global lock, each ractor holds its own GVL, allowing multiple ractors to run in parallel. Ractors also impose restrictions on how objects can be used across ractors. Objects cannot be shared freely between ractors, which prevents unsynchronized access to the same data. This isolation guarantee makes data races impossible between ractors by ensuring that concurrent execution does not involve shared mutable state. The result is safer concurrency with true parallelism.
Read at Rubyflow
Unable to calculate read time
[
|
]