【发布时间】:2011-07-23 07:36:58
【问题描述】:
我正在使用 boost 库来实现套接字通信。对于我的主应用程序,应该启动一个连接处理程序来处理所有传入的请求。
因此我将整个服务器处理程序封装到类服务器中。创建服务器对象后,它应该启动服务器。
但是这种方式线程随着构造函数代码的执行结束而死亡。我想我不明白 boost / posix 线程是如何工作的。我来自 Java 背景。
server::server(int port) {
try {
boost::asio::io_service io_service;
tcp_server server(io_service, port);
boost::thread t(boost::bind(&boost::asio::io_service::run, &io_service));
} catch (std::exception& e) {
std::cerr << e.what() << std::endl;
}
【问题讨论】:
-
贴出tcp_server类的定义。我也不清楚为什么需要一个单独的线程来运行 io_service。
标签: c++ multithreading boost boost-asio boost-thread