Son zamanlarda bazı çok iş parçacıklı konsol uygulamaları üzerinde çalışıyorum ve bunun nasıl yapıldığını merak ediyordum. I uygulama tarafından oluşturulan parçacığı miktarını kontrol etmek için, bu kodu kullanın: dolayı ise döngü,Konsol çıkışı engellenmeden döngü
foreach(string s in File.ReadAllLines("file.txt")){
while (threads >= maxThreads) ;
Thread t = new Thread(() => {
threads++;
//thread code - make network request using 's'
Console.WriteLine("TEST");
threads--;
Thread.CurrentThread.Abort();
});
t.start();
}
Bununla birlikte, oluşturulan içinde Console.WriteLine
yöntem bloke edilir ve bir sonraki serbest iplik kullanılabilir kadar göstermez .
Döngüyü Console.WriteLine
numaralı çağrıyı engellemekten engelleyebileceğim herhangi bir yol var mı?
DÜZENLEME - while döngüsünde ters durum.
Olanlardan olduğuna emin misin? Konu zaten başladıysa, ana iş parçacığında meşgul döngü tarafından engellenmez. – Blorgbeard
Ayrıca, bundan kaçınmak için konsola birden çok iş parçacığından yazma. Konsol çok dişli dostu değildir. Konularınız konsolu beklerken birbirinizi bloke edecek. – Blorgbeard
Oluşabilecek başka bir sorun göremiyorum - oluşturulan iş parçacığı, birkaç saniye süren, zaman alıcı bir işlevsellik (web istekleri gibi) çalıştırıyor. Ben mutlithreaded uygulamaları ile çok deneyimli değilim, bu yüzden ben de aynı soruyu soruyorum sanırım ... – rodit