Çeşitli web hizmetlerine birkaç eşzamanlı çağrı yapan, yanıtlarını toplayan ve daha sonra bu yanıtlardan birkaç hesaplama yapan bir .NET uygulamasına sahibiz. Ek performans elde etmeye çalışırken, IO tamamlama bağlantı noktalarını kullanarak .NET'in IO iş parçacığı kullanan yaklaşımların kullanımını araştırıyordum. Joe Duffy'nin yakın tarihli Windows'taki Eşzamanlı Programlama kitabı da dahil olmak üzere birçok kaynaktan okudum ve onların kullanışlılığını "aldığımda, .NET içindeki davranışları konusunda biraz belirsizim ve kısa bir açıklama arıyorum.".NET, IO Threads veya IO Tamamlama Bağlantı Noktalarını nasıl kullanır?
cevap
Şanslar, eşzamansız yöntemleri zaten kullanıyorsanız, hiçbir şey yapmanız gerekmez. Web servisine çağrı yapmak için kullandığınız teknolojiye bağlı olarak, sonuçta, ağdan bayt almak için çağrı yapmak üzere Win32 API'ye düşecek ve bu amaçla, G/Ç Tamamlamasını kullanacaktır. Eşzamansız çağrıları işlemek için portlar.
G/Ç işlemlerinin tamamlanmasının temel dayanağı, G/Ç işlemlerinde beklerken, G/Ç işlemlerinin tamamlandığında beklediği bir iş parçacığı havuzu olmasıdır (G/Ç işleminin tamamlanması için kayıt olduğunuz varsayılarak) bağlantı noktaları). Kayıtlı işleminiz tamamlandığında, I/O tamamlama noktası iş parçacığı havuzundan gelen iş parçacığı, geri bildirimi işlemek için kullanılır.
Elbette, G/Ç tamamlanma bağlantı noktasını çağırdıktan sonra, iş parçanız daha fazla iş yapmak için devam edebilir veya sonlandırılabilir, seçim size kalmış.
tarif yardımcı olmalıdır aşağıdaki daha:
G/Ç tamamlama Portları:
http://msdn.microsoft.com/en-us/library/aa365198(VS.85).aspx
İçinde G/Ç tamamlama bağlantı noktaları (Wayback Machine):
Hakkında IO arazisinde IO kapalıyken iş yapan bir ortak havuz tam olarak ne için umuyordum. Açıklama için teşekkürler. –
- 1. açısal-soket io io tanımlı değil
- 2. Io öğrenmeye başlamak için temel çerçeve Io (programlama dili)
- 3. IO çıkışlarını listeye toplama
- 4. IO ile karşılaştırmak haskell
- 5. Memoizing IO Hesaplamalar Haskell'e
- 6. Haskell Regex - 'IO() hatası' [Char] 'ile eşleştirilemedi' IO() hatası
- 7. Perl IO :: Socket :: INET
- 8. Sailsjs Socket IO
- 9. .Net IO sınıflarını kullanarak test edilebilir kod nasıl oluşturulur?
- 10. Eşzamansız çağrılar ve asenkronize io çağrıları arasındaki fark .net
- 11. Rust'ta polimorfik IO (Dosya veya stdin) nasıl yapılır?
- 12. Filtre IO [Belki Dize] - [Dize]
- 13. Soket IO doğru sunucuya bağlanmaz.
- 14. Socket IO, Laravel, Redis, Angularjs
- 15. .Net Excel IO bileşen ölçütlerine sahip olan var mı?
- 16. Neden async kullanmamalıyım (olayım) IO
- 17. ImageFont IO hatası: kaynağı açamıyor
- 18. Sayaçları anlama/proc/[pid]/io
- 19. çok basit io soru C++
- 20. dosya io çok uzun sürüyor
- 21. Apple Swift Dosya IO İşlemleri
- 22. Kuvvetlendirme IO Akış ve ZLib
- 23. java IO İstisna: Akış Kapalı
- 24. java.io.IOException - IO Akışının Sonu Okuma
- 25. Eclipse, vertx için io okuyamıyor
- 26. Neden niçin statik kitaplıkları desteklemiyor? IO
- 27. Linux'taki disk IO kuyruk uzunluğunu nasıl görüntülerim?
- 28. Apache Commons IO Eclipse'e nasıl eklenir? (Java)
- 29. Haskell'de iki (IO) Strings'e nasıl uyulur?
- 30. Bir WAI (Çözgü) Uygulamasında IO nasıl gerçekleştirilir?
İlgi çekici olabilir: http://marcgravell.blogspot.com/2009/02/async-without-pain.html –