Many other Ruby interpreters (JRuby, Rubinius) do not actually have a GIL. In addition, MRI 2.0 will also do away with GIL.
In addition, in many cases (for example, while waiting for I / O), the interpreter switches to another thread. Thus, although this is not technically multithreading (in the case of MRI / REE as of 1.9), it does have some advantages.
source share