[newbie, theory] MRI and thread implementation

Hello :slight_smile:
I’m starting research about changes in MRI since 1.87 to 2.2. Also I
want to compare it with JRuby.

Till now I found information that it works like that:
Ruby 1.8.7 - change OS Thread to Green threads, through GIL, there is
possible only one thread to execute at time(because of GIL and safety)

Ruby 1.9 - change OS Thread to Native threads, through GIL, there is
still possible only one thread to execute at time.

Jruby - uses JVM instead of MRI, so there is no GIL and can run multiple
threads on few cores. JRuby use Native Threads.

I know that in Ruby 2.1 and 2.2 there are rich improvements of Garbage
Collector, but couldn’t find confirmed information about model of Thread
implementing in MRI, and about GIL.

Did someone have this kind of information?
Did my research are right?
Please share some links or your knowledge.
I will be very grateful for any help.
Greetings :slight_smile:

AFAIK GIL is still there in MRI.

You need to be aware though that because underneath select() is used
there may be more concurrency in a MRI application that does IO than you
might expect.

Thank you for GIL confirmation :slight_smile:

Exactly, I think that it could be really nice made, but can’t find
confirmation or explanation how…