GVL (Global VM Lock เดิมคือ GIL) ใน MRI Ruby อนุญาตให้มีเพียง เธรดเดียวเท่านั้นที่รันโค้ด Ruby ได้ในแต่ละช่วงเวลา — ดังนั้นเธรดจึงไม่ให้ความขนานของ CPU ที่แท้จริง แต่ GVL จะ ถูกปล่อยระหว่าง I/O ดังนั้นเธรด จึง ช่วยได้สำหรับงานที่ผูกกับ I/O (I/O-bound) สำหรับความขนานของ CPU คุณต้องใช้หลายโปรเซส สิ่งนี้สะท้อนสถานการณ์ GIL ของ Python
GVL: มีเธรดเดียวรันโค้ด Ruby ในแต่ละช่วงเวลา
MRI (the standard Ruby) has a GLOBAL VM LOCK:
→ only ONE thread executes Ruby code at any instant (no CPU parallelism from threads)
→ BUT the GVL is RELEASED during blocking I/O (network, file, DB)
So: threads help for I/O-bound work, NOT for CPU-bound work.
