İçeriğe geç
parazade

Multithreading Nedir?

Yayın: · Son güncelleme:

Multithreading Nedir? Kısaca

Multithreading, bir programın birden fazla thread (iş parçacığı) kullanarak birden çok işi aynı anda ya da iç içe yürütmesidir. Çok çekirdekli işlemcilerden daha iyi yararlanmayı ve arayüzün donmamasını sağlar.

Multithreading nedir?
İçindekiler
  1. Multithreading nedir?
  2. Nasıl çalışır?
  3. Nerelerde kullanılır?
  4. Nelere dikkat etmeli?

Multithreading nedir?

Multithreading, tek bir programın içinde birden fazla thread çalıştırma tekniğidir. Türkçede çoklu iş parçacığı olarak da geçer. Amaç, işleri parçalara bölüp aynı anda yürütmek ya da birini beklerken diğerine devam etmektir.

Nasıl çalışır?

Program, ana thread'in yanında ek thread'ler başlatır ve her birine bir görev verir. Çok çekirdekli bir işlemcide bu thread'ler gerçekten paralel çalışır. Tek çekirdekte ise işletim sistemi aralarında çok hızlı geçiş yapar ve iş aynı anda yapılıyor gibi görünür.

Varsayımsal bir örnek: 8 çekirdekli bir bilgisayarda 1.000 fotoğrafı küçültecek bir program yazıyorsunuz. Tek thread ile fotoğraflar sırayla işlenir. Sekiz thread kullanıp her birine yaklaşık 125 fotoğraf verdiğinizde, iş ideal koşullarda çok daha kısa sürede biter. Disk hızı ve diğer darboğazlar nedeniyle kazanç tam sekiz kat olmaz.

Nerelerde kullanılır?

Oyunlar, video düzenleme programları, web sunucuları ve tarayıcılar multithreading'den yoğun biçimde yararlanır. Mobil uygulamalarda ağ istekleri arka plan thread'lerine verilir ki ekran donmasın.

Nelere dikkat etmeli?

Thread'ler belleği paylaştığı için aynı veriye kontrolsüz erişim yarış durumlarına yol açar. Yanlış kurulan kilitler ise programı deadlock ile tamamen kilitleyebilir. Bu hatalar çoğu zaman rastgele ortaya çıktığı için bulunması zordur. Başlangıçta dilinizin hazır thread havuzlarını ve güvenli kuyruk yapılarını kullanmak, her şeyi elle yönetmekten daha güvenlidir.

Sıkça Sorulan Sorular

Multithreading her zaman programı hızlandırır mı?

Hayır. İş küçük parçalara bölünemiyorsa ya da thread'ler sürekli birbirini bekliyorsa kazanç az olur. Thread yönetiminin kendi maliyeti de vardır.

Python'da multithreading işe yarar mı?

Standart Python'da GIL adı verilen bir kilit, aynı anda tek thread'in Python kodu çalıştırmasına izin verir. Bu yüzden ağ ve dosya bekleyen işlerde thread faydalıdır, yoğun hesaplamada ise genellikle çoklu process tercih edilir.

İlgili terimler