Uygulamamda, birçok ağ bağlantılı görevi yerine getirerek ve bazen bir io bağlı görevi yürüterek ve daha küçük io ilişkili görevlere bölünerek bir sorunu çözmem gerekiyor. Bu görevler şu anda Java'nın standart threadpool mekanizması kullanılarak yürütülmektedir. Çatal-ve-katılım çerçevesine geçip geçemeyeceğimi merak ediyorum. Ama asıl soru, genellikle io bağlı operasyonları veya CPU'yu sınırlamak için kullanılan çerçeve için midir? Çoğunlukla CPU'nun bağlı olduğu işlemler için çatal-ve-birleştirme çerçevesinin multo çekirdek işlemcilerinden faydalanmak için iş çalma tekniğini kullanmasına neden olduğunu, ancak IO'yu bağımlı görevler için kullanırsam, herhangi bir olumsuz etki olacak mı?Java'nın fork-and-thread iş parçacığı havuzu IO bağlı görevini yürütmek için iyidir?
cevap
Fork-join, işlemle ilgili görevler için tasarlanmıştır, dolayısıyla genel olarak hayır diyorum. Fork-join, FJ çerçevesini, bir süreliğine engellenecek ve yeni görevler oluşturmayacak şekilde FJ çerçevesini anlatmak için bir API'ye (ManagedBlocker api) sahip olmakla birlikte, keyfi bir şekilde değil, kısa beklemeler (bir kilit elde etmek gibi) için tasarlanmıştır. IO için bekler.
Çatal birleştirmeyi kullanan bir sistemimiz var ve IO'ya bağlı görevleri ayrı bir yürütme havuzuna aktarıyoruz. Veriler geldiğinde, görevleri bir araya getiren havuza yönlendirir, böylece yalnızca cpu-bağlı çalışma gerçekleşir.
Sorununuzun "I/O bağlı" yönünü ele almaya çalışıyorsanız, standart iş parçacıklarından fork-and-join 'e geçişin şeyleri geliştireceğinden şüpheleniyorum. Geçerli iplik tabanlı çözüm düzgün. (Ve Alex Miller'ın cevabına dayanarak, anahtar aslında işleri daha da kötüleştirebilirdi.)
Veya başka bir şekilde belirtmek gerekirse, G/Ç bağlı uygulamanızı daha hızlı hale getirmenin yolu, bunu yapan sorunları çözmektır./O bağlı ... veya sisteminizin G/Ç bant genişliğini artırın.
çatal-katılır için zorlayıcı bir avantaj bu durumda olmak görünmüyor.
çok sert bazı kaynak sürüş olmaz çünkü ya bir signficant dezavantaj olarak görünmüyor. Yapmanız başka önemli gelişme var kadar
sonuçta
i parçacığı havuzu ile kalmak istiyorum.- 1. Windows iş parçacığı havuzu ve CLR iş parçacığı havuzu
- 2. İş parçacığı havuzu 'yinelenen' görevler
- 3. İş parçacığı havuzu yeniden boyutlandırılıyor
- 4. Eşzamansız sonucu işlemek için IO iş parçacığı yoksa ne olur?
- 5. Yükseltme :: asio iş parçacığı havuzu genel amaçlı görevler için kullan
- 6. Sonsuz döngü işlevini yapmak için iş parçacığı havuzu nasıl kullanılır?
- 7. Takviye kullanarak bir iş parçacığı havuzu oluşturma
- 8. Android'de iş parçacığı havuzu boyutu nasıl seçilir?
- 9. IIS'de aynı iş parçacığı kod yürütmek için nasıl kullanılır?
- 10. System.Timers.Timer iş parçacığı bir iş parçacığı havuzu üzerinde yürütme için nasıl engellenir?
- 11. Akka akışı - farklı bir dağıtıcıya IO bağlı Akışı koyma
- 12. İskele parçacığı havuzu embeddend
- 13. QtCon ile ilişkili üye işlevi ve iş parçacığı havuzu
- 14. Tomcat iş parçacığı havuzu? Tomcat.conf'da yorumladı, kullanmalı mıyım?
- 15. C++'da destek kullanarak iş parçacığı havuzu nasıl oluşturulur?
- 16. Belirli bir iş parçacığı için CPU zamanını nasıl ölçebilirim?
- 17. Dostum, iş parçam nerede? (veya: bir .NET iş parçacığı havuzu iş parçacığı yeniden adlandırın - bu mümkün mü?)
- 18. Bir iş parçacığı veya iş parçacığı için bir DAO DAO?
- 19. iş parçacığı içinde yerel depolama iş parçacığı
- 20. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 21. iş parçacığı
- 22. Ayrı iş parçacığı içinde
- 23. java parçacığı havuzu görev aşımı sorunu
- 24. iş parçacığı yerel kaldırma yöntemi
- 25. Qt küresel iş parçacığı havuzundan yeni bir iş parçacığı bir bağlı istemci soketi işlemek için çalışılıyor yeni iplik
- 26. İlk iş parçacığı sonucu alın
- 27. Maksimum iş parçacığı sorunu
- 28. Disk IO'nun IO ağını engellemesini önlemek için hangi iş parçacığı modülünü kullanmalıyım?
- 29. CountdownTimer UI iş parçacığı güncelleştiren çalışan iş parçacığı içinde
- 30. Tomcat iş parçacığı havuzundaki iş parçacığı sayısı nasıl artırılır?
Hangi kriterlere göre "İyi"? Ne tür bir I/O? Ağ? Disk? Konsol? GUI? Çatal-ve-birleştirme gerçekten 'iplik havuzu' mu? – EJP
bir ağ bağlantılı io bağlı görevi. – Shamik
içgörülü soru; upvoted – necromancer