MRI Ruby의 GVL(Global VM Lock, 이전 GIL)은 한 번에 하나의 스레드만 Ruby 코드를 실행하도록 허용합니다 — 따라서 스레드는 진정한 CPU 병렬성을 제공하지 않습니다. 하지만 GVL은 I/O 동안 해제되므로, 스레드는 I/O 바운드 작업에는 도움이 됩니다. CPU 병렬성을 위해서는 여러 프로세스를 사용합니다. 이는 Python의 GIL 상황을 반영합니다.
GVL: 한 번에 하나의 스레드가 Ruby 코드 실행
MRI(표준 Ruby)에는 GLOBAL VM LOCK이 있음:
→ 어떤 순간에도 하나의 스레드만 Ruby 코드 실행 (스레드로부터 CPU 병렬성 없음)
→ 하지만 GVL은 블로킹 I/O(네트워크, 파일, DB) 동안 해제됨
따라서: 스레드는 I/O 바운드 작업에는 도움이 되지만, CPU 바운드에는 아님.
