|
|
|
|
|
by masklinn
4868 days ago
|
|
OP is wrong, MRI will release the GIL (and yield to other threads) on IO and after running a bit (which can yield convoy effect actually lowering the performances). C extensions can also release the GIL when not manipulating VM structures. Technically the GIL is there to protect the VM's internal state, so its operational semantics are that it's taken and released for each bytecode instruction. However the efficiency would stink (short of awesome automatic lock elision or merging), so GIL-based VMs usually have a higher threshold, either based on some sort of instructions count (which may or may not map 1:1 to bytecode instructions) or an internal "wall clock" timer. I think MRI's the latter but don't quote me on it. |
|