如何在c++中停止使用TNonblockingServer

How to stop thrift TNonblockingServer in C++?

本文关键字:TNonblockingServer c++      更新时间:2023-10-16

我从一个线程启动TNonblockingServer:

void *start_server(void *) {
    server->serve();
    return NULL;
}
pthread_create(&daemon_thread, NULL, start_server, NULL);

,并从主线程调用server->stop(),然后尝试使用pthread_join等待后台线程优雅退出。然而主线程挂起在pthread_join调用。

我怎样才能优雅地关闭节俭服务器?

很抱歉回复晚了

您只需要停止底层libevent

例如:

tv.tv_usec = 500000;
tv.tv_sec  = 0;
event_base_loopexit(myTNonBlockSvr->getEventBase(), &tv);

AFAICT TNonblockingServer::stop()未实现。TNonblockingServer析构函数会尝试一个干净的关闭,所以你可能能够删除服务器并关闭服务器。

这是一个完整的hack,理想情况下stop()将被正确实现。

相关文章:
  • 没有找到相关文章