Мой предпочтительный способ использования io_service
- создать поток при запуске приложения, который выполняет метод запуска io_service
. Проблема в том, что если нет задачи для io_service
, ее метод запуска немедленно возвращается, и поток завершается.Keep io_service alive
Как вы можете видеть из chat_client.cpp
...
boost::asio::io_service io_service;
...
chat_client c(io_service, iterator);
boost::thread t(boost::bind(&boost::asio::io_service::run, &io_service));
нить запускается после некоторые асинхронной задачи добавляется io_service
. Это делается в конструкторе chat_clients
.
Мой вопрос: есть ли способ создать поток до некоторая задача добавлена к io_service
, i. е.
// create io_service and thread on application start
boost::asio::io_service io_service;
boost::thread t(boost::bind(&boost::asio::io_service::run, &io_service));
// add some task to io_service
chat_client c(io_service, iterator);
Кроме того, чтобы остановить приложение, я использую 'work.reset();' before 't.join();' – Vertex