Ini lebih mudah difahami GIL memastikan kod bait python hanya mempunyai satu utas asli yang sedang berjalan dalam proses pada masa yang sama. Walau bagaimanapun, logik kod bait itu sendiri masih memerlukan penguncian/pengecualian bersama, dsb. untuk memastikan bahawa utas boleh masuk semula, kerana kod bait mungkin terganggu pada bila-bila masa semasa proses berjalan dan bertukar ke utas lain.
Anggapkan bahawa Pembilang awal ialah 0, dan dua utas melaksanakan kod Python ini pada masa yang sama tanpa sebarang penyegerakan
Hasil yang dijangkakan ialah kedua-dua utas telah dikira dan Pembilang akhir hendaklah 2:
Walau bagaimanapun, disebabkan tiada penguncian/pengecualian bersama, situasi pelaksanaan adalah seperti berikut:
Apabila utas A selesai melaksanakan Langkah 1, pembilang ialah 0, yang bermaksud bertukar kepada utas B
Thread B berjaya melaksanakan Step1,2,3 Now Counter ialah 1, dan kemudian bertukar kepada A
Thread A terus melaksanakan Langkah 2 dan mendapat balas 1, dan kemudian Langkah 3 menetapkan Counter kepada 1.
Ini lebih mudah difahami GIL memastikan kod bait python hanya mempunyai satu utas asli yang sedang berjalan
Contoh mudah:dalam proses pada masa yang sama. Walau bagaimanapun, logik kod bait itu sendiri masih memerlukan penguncian/pengecualian bersama, dsb. untuk memastikan bahawa utas boleh masuk semula, kerana kod bait mungkin terganggu pada bila-bila masa semasa proses berjalan dan bertukar ke utas lain.
Sekeping kod kaunter:
Anggapkan bahawa Pembilang awal ialah 0, dan dua utas melaksanakan kod Python ini pada masa yang sama tanpa sebarang penyegerakan// Langkah 1
kaunter = get_counter()
// Langkah 2
kaunter += 1
/ / Langkah 3
set_kaunter(kaunter)
Hasil yang dijangkakan ialah kedua-dua utas telah dikira dan Pembilang akhir hendaklah 2:
Walau bagaimanapun, disebabkan tiada penguncian/pengecualian bersama, situasi pelaksanaan adalah seperti berikut:
Apabila utas A selesai melaksanakan Langkah 1, pembilang ialah 0, yang bermaksud bertukar kepada utas B
Thread B berjaya melaksanakan Step1,2,3 Now Counter ialah 1, dan kemudian bertukar kepada A
Thread A terus melaksanakan Langkah 2 dan mendapat balas 1, dan kemudian Langkah 3 menetapkan Counter kepada 1. -
Keputusan akhir ialah 1.