Thread.Start
Thread.Start ile iş parçacığı başlatmayı ve Join ile beklemeyi öğrenirsin.
Start ve Join
Thread.Start() bir thread'i çalıştırmaya başlar; çağrı hemen döner, thread arka planda çalışır. Thread.Join() ise çağıran thread'i, hedef thread bitene dek bloklar.
Birlikte kullanıldığında: Start ile başlat, Join ile bekle — bu, basit senkronizasyonun temelidir. Join'e timeout verilebilir: t.Join(1000) en çok 1 sn bekler.
Join ile sıralama
Birden fazla thread'i sırayla beklemek için t1.Join(); t2.Join(); yazarsın. Tüm Join'ler dönünce ana thread devam eder.
Bu, paralel işleri toplayıp sonuçları birleştirmenin basit yoludur. Eğer bir thread hiç bitmezse Join sonsuz bekler; bu yüzden güvenlik için timeout'lu Join tercih edilebilir.
Uygulama İki thread'i sırayla bekle
Thread t1 = new Thread(() => { }); ve Thread t2 = new Thread(() => { }); oluştur. İkisini de Start() ile başlat, sonra t1.Join(); t2.Join(); ile bekle. En son Console.WriteLine("Bitti"); yaz.
Örnek çözümü göster
Thread t1 = new Thread(() => { }); Thread t2 = new Thread(() => { }); t1.Start(); t2.Start(); t1.Join(); t2.Join(); Console.WriteLine("Bitti");
Örnek çözüm:
using System;
using System.Threading;
class Program
{
static void Main()
{
Thread t1 = new Thread(() => { });
Thread t2 = new Thread(() => { });
t1.Start();
t2.Start();
t1.Join();
t2.Join();
Console.WriteLine("Bitti");
}
}
Kendini test et
-
Join çağrısı
t.Start(); t.____();Cevabı göster
t.Start(); t.Join(); -
Thread.Join() ne yapar?
- Thread'i başlatır
- Çağıran thread'i hedef bitene dek bloklar
- Thread'i iptal eder
- Yeni thread oluşturur
Cevabı göster
Çağıran thread'i hedef bitene dek bloklar — Doğru. Join çağıran thread'i bekletir.
-
Thread metotlarını eşleştir
- Start()
- Thread'i başlatır
- Join()
- Bitmesini bekler
- Join(1000)
- Timeout'lu bekleme
- Sleep(500)
- Belirli süre duraklat