我有三个问题。
- thrift-cpp 的客户端是线程安全的吗?
- 他们在 Thrift 上有某种连接池吗?
- 任何使用 thrift-cpp-client 的好习惯。
谢谢!
我有三个问题。
谢谢!
Thrift 有 doxygen 文档,但它们似乎没有建立。他们不是很漂亮。要生成副本,请运行(在 thrift 源目录中)doxygen -g Doxyfile
,将 RECURSIVE 更改为 YES,然后运行doxygen Doxyfile
。
在回答您的问题时:
哪个客户?有一大堆不同的节俭运输。一般来说,没有(AFAICT)任何全局状态,因此您可以在不同的线程中创建不同的客户端。如果您尝试在多个线程中使用相同的传输,您可能需要手动锁定,除非您已阅读代码并确认它没问题。
我一个都没见过。AFAICT只有一堆你可以自己连接的传输。有 TSocketPool,但这是一个负载平衡工具,我认为这不是您要寻找的。
我的建议:仅使用内存传输并建立自己的网络。Thrift 所做的可能不是您想要做的,即使是,他们的文档和包装也很糟糕。(或者使用协议缓冲区而不是 thrift ——这些天它们在 IMO 中得到了更好的维护。我认为这即使我是一个 thrift 贡献者。)
节俭 0.12。
“并发”客户端是一个线程安全的客户端,可以正确处理乱序响应。它比普通客户端慢,因此只应在需要在多个线程之间共享连接时使用
定义一个 ExampleService (example.thrift) 你应该有:
class ExampleServiceConcurrentClient : virtual public ExampleServiceIf {
}