GVL (Global VM Lock) — это механизм в стандартной реализации Ruby (CRuby), который позволяет выполняться только одному потоку в интерпретаторе Ruby в любой момент времени.
Цель: Упростить реализацию интерпретатора, управление памятью и предотвратить race conditions в многопоточной среде без использования сложных блокировок на уровне объектов.
Влияние: Ограничивает истинный параллелизм при выполнении CPU-bound задач в многопроцессорных системах, так как только один поток может выполнять Ruby код.
Высвобождение GVL: GVL временно освобождается во время выполнения операций ввода/вывода (I/O), таких как чтение из файла или сетевые запросы. Это позволяет другим потокам выполнять Ruby код, пока один поток ожидает завершения I/O.
Альтернативы: JRuby, Rubinius (не имеют GVL, используют нативные блокировки и собирают мусор на уровне Java VM или LLVM).
ruby