Global interpreter lock: Perbedaan revisi

5 bita ditambahkan ,  3 tahun yang lalu
k
Robot: Perubahan kosmetika
k (Bot: Migrasi 1 pranala interwiki, karena telah disediakan oleh Wikidata pada item d:Q5570451)
k (Robot: Perubahan kosmetika)
Namun dalam hal ini, beberapa implementasi berbasis JVM (Jython, JRuby) ataupun CLR (IronPython, IronRuby) dalam hal ini tidak memiliki implementasi GIL tersebut, meski dalam hal ini hal tersebut berarti implementasinya tidak akan bisa memanfaatkan sejumlah besar pustaka yang dimiliki implementasi bahasa induk, namun pada umumnya hal tersebut tergantikan dengan kekayaan pustaka yang dimiliki java ataupun .NET.
 
== Latar belakang teknis ==
GIL merupakan kunci ataupun mutex yang dimiliki oleh [[thread| utas (thread)]] [[bahasa pemrograman]] berbasis [[Penerjemah (komputasi)|penerjemahan]] yang dimaksudkan untuk menghindari akses kode ilegal atas data yang berasal dari utas lainnya. Dalam implementasinya, sebuah program penerjemah memiliki satu GIL untuk setiap satu sesi penerjemahan.
 
Aplikasi yang berjalan dalam implementasi penerjemahan yang memiliki GIL sebaiknya memanfaatkan mekanisme process (komputasi) untuk memungkinkan pemanfaatan kapabilitas multi prosesor secara penuh, dan tidak melalui pemanfaatan utas (thread). Dengan demikian, setiap proses akan memiliki satu sesi penerjemahan dan satu GIL yang tidak terkait antara satu dengan lainnya, tidak pula berbagi data antara masing-masing proses-nya. Apabila dikehendaki mekanisme berbagi data global, maka hal tersebut bisa dilakukan dengan memanfaatkan aplikasi caching external seperti [[memcached]], [[redis]] atau lainnya.
 
== Keuntungan dan kerugian ==
Penggunaan GIL dalam bahasa pemrograman secara efektif membatasi pemanfaatan paralelisasi komputasi dalam satu sesi penerjemahan yang memanfaatkan beberapa utas/multi-utas. Jika sebuah program sepenuhnya terdiri atas kode yang ditulis dalam bahasa penerjemahan dan tidak melakukan pemanggilan fungsi ataupun prosedur di luar program penerjemah dalam waktu yang lama, akan sangat kecil kemungkinan peningkatan unjuk kerja yang bisa diraih dalam mekanisme seperti ini. Dan pula, disebabkan mekanisme sinyalisasi switching eksekusi yang berbasis jumlah [[p-code]], performa eksekusi akan menurun secara drastis apabila dijalankan pada mesin yang memanfaatkan multi-prosesor ataupun multi-core, lebih rendah bila dibandingkan unjuk kerje eksekusi pada mesin berbasis single prosesor/single-core<ref>{{cite web | url=http://www.dabeaz.com/python/GIL.pdf | title=Inside the Python GIL | author=David Beazley | publisher=[http://chipy.org/ Chicago Python User Group] | date=2009-06-11 | location=Chicago | accessdate=2009-10-07}}</ref>.
 
Pada rilis-rilis terbaru, metode yang lebih baik dalam implementasi switching eksekusi telah diperbaiki, tidak lagi menggunakan jumlah p-code, melainkan berbasis waktu (micro-timer) sehingga memungkinkan eksekusi dalam mesin berbasis multi-prosesor secara lebih baik, meski dalam hal ini tidak dimaksukan untuk menghilangkan keberadaan GIL tersebut sama sekali<ref>{{cite web| url=http://www.dabeaz.com/python/NewGIL.pdf | title=Inside the new GIL | author=David Beazley | publisher=[http://chipy.org/ Chicago Python User Group]}}</ref>.
 
== Rujukan ==
{{Reflist|2}}
 
622.568

suntingan