Thread Nedir?

thread

Thread en yalın haliyle işlem parçacığı anlamına geliyor ve bildiğiniz gibi bütün bilgisayarlar aynı anda birden çok işi yapabiliyor. Buna da bilgisayar dilinde multi-thread deniyor.

Her bilgisayarın kendine özel yetenekleri var ve bunların başında, en dikkat çeken hız geliyor. Hızın en net ölçüsü ise çevrim(cycle) süresi olarak alınıyor. Bu süre 2 GHz bir işlemcide, 2 x 10^-9 saniyeye yani 2 nanosaniyeye tekabül ediyor. Tahmin edebileceğiniz gibi bu bir insan için çok kısa bir süredir ve normal yaratılmış bir insanın bunu anlaması imkansızdır. İşte buradan yola çıkarak şunu düşünelim; ben bir saniye boyunca, bilgisayar süresiyle milyon defa aynı işlemi görmek yerine, bir saniye boyunca bilgisayar süresiyle 4 nanosaniyede 1 dönen 4 işlemi görsem bunların kesik kesik yada sırayla yapıldığını anlamam. Bu sayede ben 4 işlemi aynı anda yapıyormuş gibi hissederim ama aslında bu işlemler belli bir düzen içinde zamanda bölünerek yapılır. Şu an multi-thread’in mantığını kavramış bulunuyorsunuz.
Multi-thread’e bir de kaynağın verimli kullanım(source efficiency) açısından bakalım. 4 tane kolunuz olduğunu varsayalım ama siz bütün işlerinizi yapmak için yalnızca bir tanesini kullanıyorsunuz. Sizce bu mantıklı mı? Tabi ki değil, bunun bilgisayardaki karşılığı ise; 4 çekirdekli bir işlemciniz var ama siz bütün işlerinizi sadece gidip bir tanesine yaptırıyorsunuz, diğerleri bir kenarda yatıyor. Gördüğünüz gibi bu bilgisayarın ziyanından başka bir şey değildir. Dolayısıyla bu kaynakları doğru ve etkili kullanmak düz mantıkla bakıldığında bilgisayarın hızını 4 kat arttırabilir. Ama tabi ki net 4 kat diye bir şey yok, çünkü hızı etkileyen bir çok değişken var.
Yazılımcılar açısından ise multi-thread bir yerden sonra zorunluluk haline geliyor. Nedir bu zorunluluk? Mesela konsol ekranında kullanıcıdan bir veri almanız gerekiyor, sordunuz kullanıcıya girmek istediği değeri, tamam süper. Ama sizin arka planda bir yandan da evin güvenliğini kontrol etmeniz gerekiyor ve güvenlik ihlali olursa alarm vermeniz gerekiyor, şimdi ne yapacaksınız? Kullanıcının sayı girmesini mi bekleyeceksiniz? Bu yüzden yazılımcılar multi-thread yazılım geliştirmeyi bilmeliler ve kullanmalılar. Çünkü günümüzde neredeyse hiç bir yazılımın tek tip yukarıdan aşağıya akan ve işleyen bir yapısı yok.
Bu tip yazılımlara en iyi örnek herkesin elinin altında en az bir tane olan arayüze sahip bir uygulama gösterilebilir. Siz bir yandan butona basarken, yeni sekmeler açıp kapatırken, bir şeyler indirirken o uygulamalar ekranda gördüğünüz görüntüleri nasıl güncelliyor sizce?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir