Me gustaría que alguien me diga los pros (y los contras) para usar la función de publicación. ¿Por qué y cuándo debería preferir usar la publicación y por qué/cuándo no debería usarla?boost :: asio :: io_service: ¿por qué usar la función de publicación?
Respuesta
La publicación es muy útil cuando desea que la devolución de llamada se realice esencialmente ahora, pero no en el contexto actual. Las razones pueden incluir:
El contexto actual mantiene bloqueos y desea llamar a la función una vez que se han liberado. Esto permitiría que la función adquiera esos bloqueos sin causar un punto muerto.
La pila de llamadas puede ser muy profunda
El hilo actual podría no ser apropiado para la función de alguna otra manera, y después es una manera conveniente de programar la función en otro hilo.
supongo que está comparando post()
-dispatch()
. En general, post()
es más seguro, porque dispatch()
puede llamar al controlador de inmediato, y existe un riesgo en la programación impulsada por eventos que afecta los eventos en cola de formas inesperadas. También hay razones para mantener la pila de llamadas pequeña, y para tener un comportamiento más predecible (dispatch()
puede ejecutar ahora o puede ejecutarse más tarde).
Acabo de encontrar post()
útil para eliminar un objeto solo después de que termina el evento io_service
actual/controlador/operación.
- 1. Boost asio io_service dispatch vs post
- 2. ¿Cómo prioriza el trabajo boost :: asio :: io_service work?
- 3. boost asio io_service.run()
- 4. ¿Por qué la función impulso asio expires_from_now() cancelar un deadline_timer?
- 5. ¿Puedo usar el mismo boost :: asio :: io_service para múltiples sockets de escucha?
- 6. Necesitamos múltiples io_service por subproceso para el servidor threaded boost :: asio con un aceptador único
- 7. boost :: asio iniciando diferentes servicios en hilos?
- 8. io_service, ¿por qué y cómo se usa?
- 9. Boost Asio multiproceso TCP Servidor síncrono
- 10. boost :: asio, hilos y sincronización
- 11. ¿Impulsa :: asio :: io_service preservar el orden de los controladores?
- 12. Boost Asio en Linux sin usar Epoll
- 13. boost :: asio over SocketCAN
- 14. Boost Asio tcp :: resolver: servicio no encontrado
- 15. ¿Cuál es la diferencia entre boost :: io_service poll_one y run_one?
- 16. boost :: asio :: io_service longitudes de cola ocupadas para temporizadores y publicaciones
- 17. boost :: asio, error de lectura asíncrona
- 18. boost :: asio, grupos de subprocesos y supervisión de subprocesos
- 19. boost :: asio threadpool vs. io_service_per_cpu design
- 20. Quitar todos los controladores de un boost :: asio :: io_service sin llamarlos
- 21. ¿Por qué este código Boost ASIO no funciona con este cliente python?
- 22. ¿Quién usa Boost ASIO?
- 23. Boost Asio message_flags
- 24. Boost Asio serial_port - necesito ayuda con io
- 25. Boost :: asio async_wait handler signature
- 26. boost :: asio cleanly disconnecting
- 27. Pruebas unitarias y boost :: asio
- 28. ¿Cómo evito SIGPIPE cuando uso boost :: asio?
- 29. La mejor documentación para Boost: asio?
- 30. boost :: asio :: async_write, escribiendo datos mayores a 65536 bytes
Esto podría interesarle "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu
¡Gracias por la sugerencia! No estaba al tanto :-) – eve
@ArunMu: He notado ese enlace antes, esperaba una respuesta expandida. – eve