Farklı iş parçacıklarından çok sayıda işlemin önerilmediğini okudum. Ama ne aynı thread socket.async_read ve sonraki socket.async_write (önceki için bitmeden beklemeden) çağrısı? Bu işlemlerden biri tamamlandığında uygun geri çağırma işleminin uygulanacağından yararlanabilir miyim?Boost.asio: async_read ve async_write öğelerini aynı anda tek bir iş parçacığından yapabilir miyim?
Q
Boost.asio: async_read ve async_write öğelerini aynı anda tek bir iş parçacığından yapabilir miyim?
6
A
cevap
11
Evet, bir sorun olmadan aynı yuvada beklemede olan bir async_read
ve beklemede beklemede bir async_write
sahip olabilirsiniz. io_service::run()
yöntemini çağırdığınızda, geri arama beklendiği gibi tamamlanır. Aynı soket ya da aynı yuvada birden async_writes birden async_reads Verme
, ilgili soket türüne bağlı olarak, beklenmedik bir davranışa neden olabilir. Özellikle, aynı TCP soketinde birden fazla async_writes kullanıldığında, verilerin başlangıçta beklediğinizden farklı bir sırada çıkması ve verilerin birbirine karıştırılmasıyla sonuçlanabilir. UDP'de, daha mantıklı olabilir, ama yine de buna karşı tavsiye ederim.
İlgili konular
- 1. Tek sütun aynı anda MySQL
- 2. indexOutOfBoundsException list.remove aynı anda 2 iş parçacığıyla (aynı anda) çalıştır
- 3. Aynı anda
- 4. Aynı anda NS ve A'yı da arayabilir miyim?
- 5. Aynı anda iş parçacığı dinamik sayısı oluşturma
- 6. İş parçacığından döndürülen değeri döndürür
- 7. yönteminin aynı anda farklı iş parçacıklarından yürütülmesini engellemesi
- 8. CUDA'daki ayrılma - Çekirdekdeki bir iş parçacığından çıkış
- 9. Aynı anda UPDATE ve SELECT
- 10. Sayım (*) ve AND'yi aynı anda sql sorgusunda kullanabilir miyim?
- 11. İşaretçi aritmetiğini bir STL :: vector :: yineleyicide yapabilir miyim
- 12. Youtube videosunu ve küçük resmini aynı anda yükleyebilir miyim?
- 13. HTML5'te aynı sesi aynı anda birden fazla oynatabilir miyim?
- 14. Boost.Asio
- 15. Aynı nesne için birden fazla fasulye yapabilir miyim?
- 16. MVC - Görünümlerde ifs yapabilir miyim
- 17. Aynı takma örneğe iki emac/ince bağ yapabilir miyim?
- 18. Python/Urllib2/Threading: Birden çok indirme iş parçacığından daha hızlı tek indirme iş parçacığı. Niye ya?
- 19. Bir sorguda bir tablodan güncelleme yapabilir miyim?
- 20. Bir dosyaya ve javascript'e aynı anda bağlantı
- 21. aynı anda
- 22. ViewModel özelliklerine ayrı iş parçacığından erişme
- 23. Aynı anda Visual Studio
- 24. Arka plan iş parçacığından sunucuya eşzamanlı istek
- 25. Android ve iOS'ta aynı uygulamaya aynı anda geçiş entegrasyonu
- 26. OpenGL'yi Android'deki ana iş parçacığından kullanma
- 27. Arka plan iş parçacığından bir databoundview veri kümesini doğru güncelleştirin
- 28. Elasticsearch içinde bir alanla arama yapabilir miyim?
- 29. Boost.Asio Sadece başlık olarak
- 30. Yakut çok parçacığı #join ve aynı anda yürütme bir veritabanında
TCP soketleri soruyorsunuz? –