要使asio::io_service立即结束工作,可以使用io_service::stop()函数来停止io_service的运行。下面是一个简单的示例代码:
#include
#include
void do_work(boost::asio::io_service& io_service) {
std::cout << "Doing some work..." << std::endl;
// 模拟一些工作
boost::asio::steady_timer timer(io_service, boost::asio::chrono::seconds(5));
timer.wait();
std::cout << "Work done." << std::endl;
}
int main() {
boost::asio::io_service io_service;
// 创建一个工作线程来执行io_service的工作
boost::asio::io_service::work work(io_service);
std::thread thread([&io_service]() {
io_service.run();
});
// 执行一些工作
do_work(io_service);
// 停止io_service的运行
io_service.stop();
thread.join();
std::cout << "io_service stopped." << std::endl;
return 0;
}
在上面的示例中,我们首先创建一个io_service对象,并创建一个工作线程来执行io_service的工作。然后,在主线程中调用do_work()函数来执行一些工作。最后,我们调用io_service的stop()函数来停止io_service的运行,并等待工作线程执行完毕。
运行上述代码,你将看到输出类似于以下内容:
Doing some work...
Work done.
io_service stopped.
这表明io_service已经立即停止工作。