قفل مفسر سراسری
یک قفل مفسر سراسری (GIL) مکانیزمی است که برای همگام سازی اجرای ریسهها در مفسر زبانهای برنامهنویسی مورد استفاده قرار میگیرد به طوری که تنها یک ریسه میتواند در یک زمان اجرا شود. یک مفسر که همیشه از GIL استفاده میکند فقط قادر به یک اجرای یک ریسه در یک زمان است حتی اگر اجرا بر روی یک پردازنده چند هسته ای انجام شود. برخی از مفسرهای محبوب که از GIL استفاده میکند عبارتاند از: CPython و Ruby MRI.
مفاهیم فنی
قفل مفسر سراسری (GIL) یک قفل انحصار متقابل که توسط مفسر ریسه ناامن یک زبان برنامهنویسی برای جلوگیری از به اشتراک گذاری کد ما بین دیگر ریسهها است. در پیادهسازی با GIL، همیشه برای یک ریسه یک GIL در نظر گرفته میشود.
برنامههای کاربردی در حال اجرا که از GIL بهره میبرند میتوانند با استفاده از فرایندهای جداگانه به رایانش موازی دست یابند و هر فرایند مفسر خود و هر مفسر GIL خود را دارا استد در غیر این صورت GIL میتواند مانع قابل توجهی برای رایانش موازی باشد.
اشکالات
استفاده از قفل مفسر سراسری در یک زبان بهطور مؤثر میزان راینش موازی را از طریق همروندی یک پردازنده با چندین ریسه محدود میکنید.
دلایل به کارگیری یک قفل عبارتند از:
- افزایش سرعت برنامههای تکروندی (بدون ضرورت به دست آوردن و یا آزادسازی قفل در تمام ساختارهای داده ای جداگانه)
- ادغام سازی آسانِ کتابخانههای C که معمولاً روندهای ناامن دارند
- سهولت پیادهسازی
مثال
در زبانهای زیر به صورت گسترده از GIL استفاده شدهاست:
زبان | مفسر |
---|---|
پایتون | سیپایتون |
روبی | Ruby MRI |
جستارهای وابسته
منابع
- ↑ "GlobalInterpreterLock". Retrieved 30 November 2015.
- ↑ David Beazley (۲۰۰۹-۰۶-۱۱). «Inside the Python GIL» (PDF). Chicago Python User Group. بایگانیشده از اصلی (PDF) در ۲۴ دسامبر ۲۰۱۰. دریافتشده در ۶ اوت ۲۰۱۸.
- ↑ 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.
- ↑ «Python/C API Reference Manual: Thread State and the Global Interpreter Lock». بایگانیشده از اصلی در ۱۴ سپتامبر ۲۰۰۸. دریافتشده در ۶ اوت ۲۰۱۸.