Топ питань
Часова шкала
Чат
Перспективи

Глобальне блокування інтерпретатора

З Вікіпедії, вільної енциклопедії

Remove ads

Глобальне блокування інтерпретатора (англ. Global Interpreter Lock, GIL) — це механізм інтерпретатора, що гарантує те, що в кожен момент часу виконується код лише одного потоку, для уникнення конкурентного доступу до спільних структур даних. В мовах, що реалізують GIL, завжди існує один GIL для кожного процесу інтерпретатора. Прикладами реалізацій інтерпретаторів, які використовують GIL, є CPython та CRuby.

Thumb
Схематичне зображення роботи потоків під керуванням GIL. Зелений — потік, який утримує GIL, червоні — заблоковані потоки.

Програми, написані на мовах з GIL, можуть використовувати процеси для досягнення повної конкурентності, оскільки кожен процес матиме свій екземпляр інтерпретатора і власний GIL. В іншому випадку GIL створює серйозну перешкоду конкурентності — ціна, яку платять за динамізм мови.

Переваги застосування цього механізму включають:

  • збільшення швидкості однопотокових програм (немає необхідності блокувати кожну структуру даних окремо)
  • проста інтеграція з бібліотеками мови C, які зазвичай не є потокобезпечними.
Remove ads

Дивись також

  • Green threads

Посилання

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads