Изучение boost asio и выяснение класса, называемого "нить", насколько я понимаю. Если есть только один io_service, связанный с конкретной цепочкой, и вывести дескриптор по цепочке.
пример (из здесь)
boost::shared_ptr< boost::asio::io_service > io_service(
new boost::asio::io_service
);
boost::shared_ptr< boost::asio::io_service::work > work(
new boost::asio::io_service::work( *io_service )
);
boost::asio::io_service::strand strand( *io_service );
boost::thread_group worker_threads;
for( int x = 0; x < 2; ++x )
{
worker_threads.create_thread( boost::bind( &WorkerThread, io_service ) );
}
boost::this_thread::sleep( boost::posix_time::milliseconds( 1000 ) );
strand.post( boost::bind( &PrintNum, 1 ) );
strand.post( boost::bind( &PrintNum, 2 ) );
strand.post( boost::bind( &PrintNum, 3 ) );
strand.post( boost::bind( &PrintNum, 4 ) );
strand.post( boost::bind( &PrintNum, 5 ) );
Затем строка будет выполнять сериализацию обработчика для нас. Но в чем преимущества этого? Почему бы нам просто не создать один поток (например: make x = 1 в цикле for), если мы хотим, чтобы задачи стали сериализованная?