2010-06-11 17 views
6

Tengo curiosidad por lo lejos que otros han impulsado Boost.Asio en términos de escalabilidad. Estoy escribiendo una aplicación que puede usar cerca de 1000 objetos de socket, un puñado de objetos de aceptación y muchos miles de objetos de temporizador. Lo configuré de modo que haya un grupo de subprocesos que invoque io_service::run y use strand en los lugares apropiados para garantizar que mis controladores no se pisen entre sí.Escalabilidad de Boost.Asio

Mi plataforma es Red Hat Enterprise Linux con Boost 1.39, aunque no me opongo a actualizar a una versión más reciente de boost.

Respuesta

9

Estamos utilizando 1.39 en varios sabores de Linux para temporizadores, red (tanto TCP y UDP), en serie (más de 20 líneas, dos de los cuales funcionan a 500 kbps), e inotify eventos, y aunque no tenemos muchos conexiones de socket, tenemos algunos cientos de temporizadores asincrónicos en cualquier momento. Están en producción y funcionan bien, para nosotros. Si fuera tú, inventaría un prototipo rápido y una prueba de rendimiento.

Boost 1.43 reclama una serie de mejoras de rendimiento específicas de Linux en ASIO, pero aún no las he comparado con nuestro producto.

+0

Buena sugerencia, haré algunas mediciones comparando Boost 1.39 a 1.43. –

6

He utilizado boost asio con un cliente/servidor donde el servidor tiene varios cientos de conexiones simultáneas durante todo el día. Cada sesión realiza muchas operaciones de lectura/escritura durante varias horas cada una. Yo recomendaría usar la última versión de boost asio. No recuerdo la versión 1.39 pero he tenido problemas con versiones anteriores. La versión actual de boost asio parece estable.

El software del que estoy hablando solo funciona en Windows, pero debo mencionarlo también, que difiere de su situación.

+0

¿Utiliza múltiples hilos? ¿o solo un hilo grande y poderes asincrónicos? – matiu