GVL (Global VM Lock، پہلے GIL کے نام سے جانا جاتا تھا) MRI Ruby میں صرف ایک thread کو ایک وقت میں Ruby code کو execute کرنے کی اجازت دیتا ہے — تو threads اصل میں CPU parallelism فراہم نہیں کرتے۔ لیکن GVL I/O کے دوران release ہوتا ہے، تو threads دراصل I/O-bound کام کے لیے مدد کرتے ہیں۔ CPU parallelism کے لیے، آپ متعدد processes استعمال کرتے ہیں۔ یہ Python کی GIL صورتحال کی عکاسی کرتا ہے۔
GVL: ایک وقت میں ایک thread Ruby code چلاتا ہے
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.
