پرش به محتوا

قفل مفسر سراسری

از ویکی‌پدیا، دانشنامهٔ آزاد

یک قفل مفسر سراسری (GIL) مکانیزمی است که برای همگام سازی اجرای ریسه‌ها در مفسر زبان‌های برنامه‌نویسی مورد استفاده قرار می‌گیرد به طوری که تنها یک ریسه می‌تواند در یک زمان اجرا شود.[۱] یک مفسر که همیشه از GIL استفاده می‌کند فقط قادر به یک اجرای یک ریسه در یک زمان است حتی اگر اجرا بر روی یک پردازنده چند هسته ای انجام شود. برخی از مفسرهای محبوب که از GIL استفاده می‌کند عبارت‌اند از: CPython و Ruby MRI.

مفاهیم فنی

[ویرایش]

قفل مفسر سراسری (GIL) یک قفل انحصار متقابل که توسط مفسر ریسه ناامن یک زبان برنامه‌نویسی برای جلوگیری از به اشتراک گذاری کد ما بین دیگر ریسه‌ها است. در پیاده‌سازی با GIL، همیشه برای یک ریسه یک GIL در نظر گرفته می‌شود.[۲]

برنامه‌های کاربردی در حال اجرا که از GIL بهره می‌برند می‌توانند با استفاده از فرایندهای جداگانه به رایانش موازی دست یابند و هر فرایند مفسر خود و هر مفسر GIL خود را دارا استد در غیر این صورت GIL می‌تواند مانع قابل توجهی برای رایانش موازی باشد.

اشکالات

[ویرایش]

استفاده از قفل مفسر سراسری در یک زبان به‌طور مؤثر میزان راینش موازی را از طریق هم‌روندی یک پردازنده با چندین ریسه محدود می‌کنید.

دلایل به کارگیری یک قفل عبارتند از:

  • افزایش سرعت برنامه‌های تک‌روندی (بدون ضرورت به دست آوردن و یا آزادسازی قفل در تمام ساختارهای داده ای جداگانه)
  • ادغام سازی آسانِ کتابخانه‌های C که معمولاً روندهای ناامن دارند
  • سهولت پیاده‌سازی

مثال

[ویرایش]

در زبان‌های زیر به صورت گسترده از GIL استفاده شده‌است:[۳][۴]

زبان‌های استفاده کننده از GIL
زبان مفسر
پایتون سی‌پایتون
روبی Ruby MRI

جستارهای وابسته

[ویرایش]

منابع

[ویرایش]
  1. "GlobalInterpreterLock". Retrieved 30 November 2015.
  2. David Beazley (۲۰۰۹-۰۶-۱۱). «Inside the Python GIL» (PDF). Chicago Python User Group. بایگانی‌شده از اصلی (PDF) در ۲۴ دسامبر ۲۰۱۰. دریافت‌شده در ۶ اوت ۲۰۱۸. از پارامتر ناشناخته |مکان ناشر= صرف‌نظر شد (کمک)
  3. Shannon -jj Behrens (۲۰۰۸-۰۲-۰۳). «Concurrency and Python». Dr. Dobb's Journal. ص. ۲. The GIL is a lock that is used to protect all the critical sections in Python. Hence, even if you have multiple CPUs, only one thread may be doing "pythony" things at a time.
  4. «Python/C API Reference Manual: Thread State and the Global Interpreter Lock». بایگانی‌شده از اصلی در ۱۴ سپتامبر ۲۰۰۸. دریافت‌شده در ۶ اوت ۲۰۱۸.