如何在C ++中停止节俭TNonblockingServer?

时间:2011-04-16 07:17:35

标签: c++ multithreading rpc thrift

我从一个线程启动一个TNonblockingServer:

void *start_server(void *) {
    server->serve();
    return NULL;
}

pthread_create(&daemon_thread, NULL, start_server, NULL);

,并从主线程调用server->stop(),然后尝试使用pthread_join等待后台线程正常退出。但是主线程在pthread_join调用时挂起。

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

2 个答案:

答案 0 :(得分:1)

对于迟到的回复表示抱歉

你只需要停止潜在的libevent

例如,稍微延迟停止:

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

答案 1 :(得分:0)

AFAICT TNonblockingServer::stop() is not implementedTNonblockingServer析构函数确实尝试干净关闭,因此可能能够删除服务器并关闭服务器。

这是一个完整的黑客攻击,理想情况下stop()将得到正确实施。