asio 多线程理解
理解asio的多线程,一个线程一个iocontext,这样各个socket是在不同的service里面进行的,我们使用第一个线程来接收,用不同的线程来处理客户端
#ifndef c_thread_pool_h
#define c_thread_pool_h
#include
#include
#include
#include
class c_thread_pool
{
public:
c_thread_pool(int threadNum = std::thread::hardware_concurrency())
: work_(new boost::asio::io_service::work(service_))
{
for (int i = 0; i start();
}
this->doAccept();
});
}
private:
boost::asio::io_service &io_service_;
tcp::acceptor acceptor_;
c_thread_pool * pool_;
};
int main(int argc, char *argv[])
{
c_thread_pool pool(4);
unsigned short port = 5800;
c_echo_server server(pool.getIOService(), port,&pool);
pool.stop();
return 0;
}
client
使用测试工具先来测试
服务端做回显数据,这里没有做协议,后面再做协议,并且加上并发测试客户端