GVL (Global VM Lock, trước đây là GIL) trong MRI Ruby chỉ cho phép một thread thực thi code Ruby tại một thời điểm — nên thread không cung cấp song song CPU thực sự. Nhưng GVL được giải phóng trong khi I/O, nên thread thực sự giúp ích cho công việc thiên về I/O. Cho song song CPU, bạn dùng nhiều tiến trình. Điều này phản ánh tình huống GIL của Python.
GVL: một thread chạy code Ruby tại một thời điểm
MRI (Ruby chuẩn) có một GLOBAL VM LOCK:
→ chỉ MỘT thread thực thi code Ruby tại bất kỳ thời điểm nào (không có song song CPU từ thread)
→ NHƯNG GVL được GIẢI PHÓNG trong khi I/O bị chặn (mạng, file, DB)
Vậy: thread giúp ích cho công việc thiên về I/O, KHÔNG cho công việc thiên về CPU.
