evpp
evpp copied to clipboard
请问如何停止EventLOOP继续运行
evpp::TCPServer server(&loop, addr, "L", 1);
server.SetMessageCallback(&Message);
server.SetConnectionCallback(&Connection);
server.Init();
server.Start();
loop.Run();
std::cout << "2222"<< std::endl;
设置读取N次后想结束服务器继续往下运行cout,但在消息回调函数(const evpp::TCPConnPtr& conn )里试过下面几句后,仅仅会停止服务器,却不继续运行到cout。 conn->loop()->Stop(); conn->Close(); 请问要如何实现继续运行loop.Run();后续语句?谢谢
一直实验后发现,在TCPServer 申明及初始化时,将thread_num改为0就可以一次断了继续运行,1则断了后还要再连再断一次,2则断了后要重复2次。能否有不论thread_num是多少,一次性全断的方法?
Run是阻塞的,所以不能执行Run之后的代码。但是你可以在另外一个线程中启动服务器,然后在主线程关闭这个服务器,等待子线程推出后,再执行你要执行的代码。其中有个小技巧,eventloop和tcpserver要用unique_ptr保护起来(如下),不然你的子线程join的时候会卡住。也算是evpp设计不好的地方吧。 std::unique_ptrevpp::EventLoop _loop; std::unique_ptrevpp::TCPServer _tcp_server;