Estoy usando boost::asio::io_service
como un grupo de subprocesos básicos. Algunos subprocesos se agregan a io_service, el subproceso principal comienza a publicar controladores, los subprocesos de trabajo comienzan a ejecutar los controladores y todo termina. Hasta aquí todo bien; Obtengo una buena aceleración sobre el código de un solo subproceso.¿Establecer límite en el tamaño de la cola de publicaciones con Boost Asio?
Sin embargo, el hilo principal tiene millones de elementos para publicar. Y simplemente los sigue publicando, mucho más rápido de lo que los hilos de trabajo pueden manejarlos. No alcanzo los límites de RAM, pero sigue siendo una tontería poner en cola tantas cosas. Lo que me gustaría hacer es tener un tamaño fijo para la cola del controlador y tener un bloque post() si la cola está llena.
No veo ninguna opción para esto en los documentos de Boost ASIO. es posible?
El problema no es que el 'io_service 'se detenga antes de completar el trabajo --- sabemos sobre la eliminación del objeto' work' para hacer que el 'io_service' se detenga con gracia. El problema es que el 'io_service' permite que se acumulen demasiadas tareas. Nos gustaría limitar el número de tareas sin asignar de una manera que no implique un sondeo por parte del hilo que crea las tareas, de ahí nuestra pregunta sobre si 'poll()' puede hacerse para bloquear. – uckelman