Asio :: io_service y thread_group problema del ciclo de vida

Mirando arespuestas como esta, podemos hacer cosas como:

boost::asio::io_service ioService;
boost::thread_group threadpool;
{
    boost::asio::io_service::work work(ioService);
    threadpool.create_thread(boost::bind(&boost::asio::io_service::run, ioService));
    threadpool.create_thread(boost::bind(&boost::asio::io_service::run, &ioService));
    ioService.post(boost::bind(...));
    ioService.post(boost::bind(...));
    ioService.post(boost::bind(...));
}
threadpool.join_all();

Sin embargo, en mi caso quiero hacer algo como:

while (condition)
{
    ioService.post(boost::bind(...));
    ioService.post(boost::bind(...));
    ioService.post(boost::bind(...));
    threadpool.join_all();

    // DO SOMETHING WITH RESULTS
}

sin embargo, elboost::asio::io_service::work work(ioService) la línea está fuera de lugar y, por lo que puedo ver, no puedo volver a crearla sin necesidad de volver a crear cada subproceso en el grupo.

En mi código, la sobrecarga de creación de subprocesos parece insignificante (y en realidad un mejor rendimiento que el código anterior basado en mutex), pero ¿hay alguna forma más limpia de hacerlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta