c++ - 如何在 C++ 中停止 Thrift TNonblockingServer?

标签 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 调用时挂起。

如何优雅地关闭 thrift 服务器?

最佳答案

抱歉回复晚了

你只需要停止底层的 libevent

例如,稍微延迟的停止:

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

关于c++ - 如何在 C++ 中停止 Thrift TNonblockingServer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685093/

相关文章:

c++ - 如何调试从 C++ DllImport 调用的 C++ dll

c++ - 如何使用 C++ 从软件内部禁用特定的 Windows 热键?

iphone - Objective-C 相当于 Java 的 BlockingQueue?

python - 关闭 Twisted 中的 Perspective Broker 连接

c++ - 多态过滤器迭代器范围

c++ - 尝试将给定金额分成不同的账单

c# - 如何在考虑多线程的情况下恰好执行一段代码?

c++ - 什么是 C++ 应用程序的最佳多线程应用程序调试器

拉取 docker 镜像时 Kubernetes ImagePullBackOff 错误

web-services - SOAP 和 RPC 之间的关系