Multithreading vs Multiprocessing

Cpu bound işlemlerde multi-threading faydalı olur mu? Mesela mergesort ile çok büyük bir listeyi sıralayacağım ve her 2ye bölme için programda bir thread yaratıp sonra birleştirdim. Sequential programlamadan daha mı hızlı çalışır? Anladığım kadarıyla multithreading concurrency denen illüzyona karşılık geliyor. Multiprocessingin bu şekildeki ful cpubound işlemlerde paralel işlem yürütüp gerçek bir fayda sağlayabildiğini biliyorum ancak multithreadingin bir faydası olur mu? Ayrıca Bir programlama dilinde threadler yarattığımda bu tek bir mikroişlemci üzerinde mi oluşuyor yoksa farkklı mikroişlemcilere dağıtabiliyor muyuz?(böyle olabiliyorsa sanırım paralellik yine sağlanmış oluyor). Anlayışımda yanlışlıklar olabilir. Düzeltirseniz sevinirim.

Genel olarak: evet.

Thread’ler paralel olarak calisabiliyorsa, thread yaratmanin, isi thread’lere bolmenin vs. maliyeti paralelligin getirdigi kazanctan dusukse, evet.

Concurrency eszamanli olarak calisabilen isler. startA(); startB(); stopB(); stopA(); da concurrent.

Thread’lerin sagladigi sey thread bazli paralellik.

Evet. Multithreading ve multiprocessing (ve hatta async programlama da) concurrent isleri paralel calistirma yontemleri. Yukaridaki sartlar tuttugu surece hepsi fayda saglar.

Genellikle thread’ler isletim sistemleri tarafindan yonetiliyor ve kullanilabilen butun islemcilere (core’lara) dagitiliyorlar. Process’ler de keza.

User-mode thread’lerin / green thread’lerin akibeti ise calistiricilarinin elinde. Mesela JavaScript’te tek process/thread altinda calistiklari icin paralellik saglamiyorlar. Cogu diger async runtime birden fazla thread uzerinde calismalarina izin verip (M:N threading) paralellik saglayabiliyor—sanirim. Belki de JavaScript modeli sandigimdan daha yaygindir.

2 Beğeni