Ben istiyorum. Neden ve ne zaman mesaj kullanmayı tercih etmeliyim ve neden/ne zaman kullanmak istememeliyim? Eğer geri arama esasen şimdi ortaya istediğinizdeboost :: asio :: io_service - neden post işlevini kullanıyorsunuz? Birisi sonrası işlevini kullanarak bana artılarını (ve eksileri) anlatmak için
cevap
Mesaj ancak mevcut bağlamda, çok faydalıdır. Nedenler şunlar olabilir:
Geçerli içerik kilitleri tutuyor ve bunların serbest bırakıldıktan sonra çağrılmasını istiyorsunuz. Bu, fonksiyonun bir kilitlenmeye neden olmadan bu kilitleri kendisinin almasına izin verir.
çağrı yığını geçerli iş parçacığı başka bir şekilde işlev için uygun olmayabilir
çok derin olabilir ve sonrası başka bir iş parçacığı işlevi zamanlama için uygun bir yoldur.
Sana dispatch()
için post()
karşılaştırarak tahmin ediyorum. Genelde, dispatch()
hemen işleyicisi çağırabilir çünkü post()
, daha güvenli olduğunu ve beklenmedik şekillerde sıraya etkinliklerde etkili olay güdümlü programlama riski vardır. Aynı zamanda, küçük bir çağrı yığını tutmak ve (hemen dispatch()
olabilir çalıştırmak veya daha çalıştırabilir) daha öngörülebilir bir davranışa sahip olarak yarar sağlar.
Sadece post()
numaralı bağlantıyı bulduktan sonra bir nesneyi silmeyi şimdiki io_service
olay/işleyici/işlem bittikten sonra bulabilirsiniz.
- 1. Boost :: asio ve boost :: thread
- 2. boost asio ve coroutine2 örnek
- 3. boost :: asio, iplik havuzları ve ben <code>boost::asio</code> kullanarak bir iş parçacığı havuzu uyguladık
- 4. boost :: asio :: io_service zamanlayıcılar ve mesajlar için işgal edilen kuyruk uzunlukları
- 5. Boost :: asio,
- 6. Birisi javascript getCookie() işlevindeki while döngüsünün işlevini bana açıklayabilir mi? Bir soru sormak için
- 7. Async Boost Asio kullanarak dosya tanıtıcıda bekle
- 8. C++ işlevini
- 9. Boost :: io_service poll_one ve run_one arasındaki fark nedir?
- 10. Başlatma işlevini kullanarak Xpath
- 11. boost :: asio UDP yayını
- 12. Gitmek için kdiff3 işlevini kullanarak git…
- 13. Boost Asio SSL anlaşması asla
- 14. Birden çok dinleme soketi için aynı boost :: asio :: io_service kullanabilir miyim?
- 15. Boost :: asio :: ip :: tcp :: resolver :: iterator ne yapar?
- 16. Bir sınıf üyesi işlevini bağlamak için boost :: bind'i nasıl kullanabilirim?
- 17. Daha iyi boost asio örnek
- 18. Dişli sunucu döngüsünü Boost :: Asio
- 19. Asio çatalını nasıl güvenli hale getirebilir
- 20. dwscript kullanarak CreateOleObject işlevini çağırma?
- 21. jsp'yi kullanarak bir javascript işlevini çağırırken sorun
- 22. İşte PostgreSQL işlevini
- 23. Backbone.history işlevini, rota işlevini tetiklemeden geri dönmek için kullanın
- 24. Birisi, getCurrentPosition ile watch position() işlevini nasıl kullanabileceğimi gösterebilir mi?
- 25. Nasıl boost asio boost yakalanır :: system :: error_code istisnayı diğer istisnalardan ayırır mı?
- 26. (Z3Py) işlevini
- 27. Javascript işlevini getComputedTextLength()
- 28. bindbind() işlevini açıkla
- 29. boost :: asio :: std :: chrono zaman değerleri olan deadline_timer
- 30. JQuery işlevini nasıl adlandırabilirim?
Bu ilginizi çekebilir "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu
Bahşiş için teşekkürler! Daha önce bu bağlantıyı fark ettik ben genişletilmiş bir cevap umuyordum: Ben – eve
@ArunMu :-) farkında değildi. – eve