CodeBlanks Logo Icon CodeBlanks

Lock

threading.Lock ile kritik bölgeyi öğrenirsin.

threading.Lock nedir?

threading.Lock paylaşılan bir kaynağa aynı anda yalnızca bir parçacığın erişmesini sağlar. .acquire() kilidi alır, .release() bırakır.

Bir kritik bölge, birden çok parçacığın aynı kaynağa yazdığı kod parçasıdır. Kilit olmadan iki parçacık aynı anda yazabilir ve veri yarışı oluşur. Lock ile bu bölgeyi korursun: ilk parçacık acquire yapar, işini bitirip release yapana kadar diğerleri bekler. Bu, parçacıklı programlamanın temel güvenlik aracıdır.

with Lock kullanımı

with lock: bloğu kilidi otomatik alır ve bırakır. acquire/release yazmaktan daha güvenlidir; çünkü istisna olsa bile kilit otomatik bırakılır.

Bu desen context manager olarak bilinir. Bloğa girince acquire, çıkınca release çağrılır. Kilitlemeyi unutmak yaygın bir hatadır; with bunu önler. Üretime gidecek kodda her zaman with lock: tercih edilmelidir.

Uygulama Lock ile kritik bölge

from threading import Lock ile içe aktar. lock = Lock() ile kilit oluştur. lock.acquire() çağır, print("kritik") yap, lock.release() çağır.

Başlangıç kodu

main.py
# kilit oluştur
# kritik bölgeyi koru
# yazdır

Örnek çözüm

main.py
from threading import Lock

lock = Lock()
lock.acquire()
print("kritik")
lock.release()

Beklenen çıktı

kritik

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Lock.acquire ne yapar?

main.py
lock = Lock()
lock.acquire()
# kritik bölge
lock.release()
  • Kilit durumunu döndürür
  • Kilidi siler
  • Kilidi bırakır
  • Kilidi alır, başkası varsa bekler Doğru cevap

Açıklama: acquire kilidi alır; başka parçacık tutuyorsa bekler.

2 acquire çağrısını tamamla

Soru
lock = Lock()
lock.____()
print("kritik")
lock.release()
Cevap
lock = Lock()
lock.acquire()
print("kritik")
lock.release()

Açıklama: Bu yöntem kilidi talep eder.

3 Lock kavramlarını eşleştir

Kavram Anlamı
Lock Kilit nesnesi
acquire Kilidi alır
release Kilidi bırakır
kritik bölge Korunan kod

Uzman bölümündeki tüm dersler