Bu sorunun oldukça eski olduğunu biliyorum, ancak 2009'dan beri işler gelişti.
Şu anda dikkate alınması gereken iki şey var: çekirdek sayısı ve her bir çekirdek içinde çalışabilecek iplik sayısı.
Intel işlemcilerde, iş parçacıklarının sayısı sadece 2 olan Hyperthreading tarafından tanımlanır (varsa). Ancak Hyperthreading, 2 iş parçacığı kullanılmasa bile yürütme sürenizi iki kat azaltır! (yani, iki işlem arasında paylaşılan 1 boru hattı - bu, daha fazla işleminiz olduğunda iyidir, aksi halde çok iyi değildir. Daha fazla çekirdek kesinlikle daha iyidir!)
Diğer işlemcilerde 2, 4 ve hatta 8 iş parçacığı olabilir. Dolayısıyla, her biri 8 iş parçacığını destekleyen 8 çekirdeğiniz varsa, bağlam değiştirme olmadan paralel çalışan 64 işleminiz olabilir.
Eğer kontrolünüz dışında her türlü bağlam için bağlam değiştirme yapacak standart bir işletim sistemi ile çalıştırırsanız "Bağlam değiştirme" kesinlikle doğru değildir. Ama ana fikir bu. Bazı işletim sistemleri işlemcileri ayırmanıza izin verir, böylece yalnızca uygulamanızın söz konusu işlemciye erişimi / kullanımı olur!
Kendi tecrübelerime göre, çok fazla G / Ç'niz varsa, birden çok iş parçacığı iyidir. Çok yoğun bellek yoğun çalışmanız varsa (kaynak 1, kaynak 2 oku, hızlı hesaplama, yazma) daha fazla iş parçacığına sahip olmak yardımcı olmaz. Yine, bu aynı anda ne kadar veri okuduğunuz / yazdığınıza bağlıdır (yani, SSE 4.2 kullanırsanız ve 256 bit değerlerini okursanız, adımlarındaki tüm iş parçacıklarını durdurur ... başka bir deyişle, 1 iş parçacığının uygulanması çok daha kolaydır ve Bu işlem ve bellek mimarinize bağlı olacaktır, bazı gelişmiş sunucular ayrı çekirdekler için ayrı bellek aralıklarını yönetir, böylece verilerinizin düzgün bir şekilde dosyalandığını varsayarak ayrı iş parçacıkları daha hızlı olur ... bu nedenle, bazılarında mimariler, 4 işlem 4 iş parçacığı ile 1 işlemden daha hızlı çalışacaktır.)