Rehber Multi-Threading ile Single-Threading kullanma arasındaki fark

Merhabalar. Bu rehberde Multi-Threading ile Single-Threading arasındaki farkı ve kullanım yapısını anlatmaya çalışacağım.

Öncelikle bunlar nedir?

Single-Threading;


images-1.jpeg


Bu art arda işlem yapmaya denir. Yani bir işlem bitmeden diğer işleme geçmez yazılım.

Yani bir işlem normalde 3 dakika sürüyorsa bu Single-Threading ile 7 dakika sürebiliyor.

Multi-Threading;

images.jpeg


Diğer adıyla çoklu çekirdek kullanımı diye geçer. Bu ise bir işlem bitmeden diğerine geçmek yerine verilen tüm işlemleri eş zamanlı yapmanızı sağlar. Işlem 3 dakika sürüyor ise Multi-Threading ile bu süre 1 dakikaya kadar inebilir.

Bu işlemci gücü ve çekirdek / sanal çekirdek sayısı ile doğru orantılı.

Yüksek seviye diller bu işlemi yapmanıza izin veriyor (C#, C++, Java vb.).

Kısa bir örnek verelim. Gözcü eski sürümleri Single-Threading kullandığı için yükleme süresi 17 saniye gibi uzun bir süre sürüyordu.

Ancak yeni sürümlerde Multi-Threading yapısına geçtiğimiz için yükleme süresi 2 saniye sürüyor.

Aradaki fark bariz şekilde belli.

images-2.jpeg


Bu işlemi darboğaz gibi düşebilirsiniz.

Bir yazılımda, özellikle çok faktörlü işlem yapılıyorsa mutlaka Multi-Threading kullanılmalı.

Diğer bir artısı ise program içinde sürekli çalışan bir döngü var ise programın donmasına neden olur bu.

Ancak Multi-Threading yapısı ile döngü kullanılırsa bu donma sorunu ortadan kalkar.

Kısaca aralarındaki fark bu. Siz siz olun, Multi-Threading öğrenin.
 
Ekleme olarak belirteyim, multithreading'de ayni kaynagi birden fazla thread kullanacagi icin cok daha fazla duzenleme yapmak gerekir. Kiyafet utulemek gibi dusunebilirsiniz bunu. Bir sepet camasiri kac tane utu ile en hizli utulersiniz? Bir noktadan sonra ekstra utu kullanmaniz sizi aksine yavaslatacaktir. Bu da "multithreading cost" adi verilen mevzudur. Bilgisayar sistemlerinde yasanan bu problemi, ki isletim sistemlerinin cozmek zorunda oldugu bir problem bu; su sekilde bir analoji cok guzel ifade eder:


Yazdiginiz basit bir sort algoritmasini dahi multithread yapmaya kalksaniz problemin kompleksitesi 3'e katlanir.

Ayrica multithread calisan bir algoritmada nadir gorulen bir bug'i fix etmek de saatler surer.
 

Geri
Yukarı