如何让 Apache Thrift 为多线程服务器生成 C++ 代码?

How do I get Apache Thrift to generate c++ code for a multithreaded server?

我对节俭很陌生。仍在使用服务器和客户端工作的玩具示例 很好,除了我的服务器生成的代码总是 TSimpleServer,从不 TThreadedServer.

即使我在教程示例中 运行 这个我也没有得到 TThreadedServer 服务器

thrift -r --gen cpp tutorial.thrift

简单直接的回答是:不行。

稍微长一点的答案是,文件被命名为 *.skeleton.* 是有原因的。这些框架文件仅用作帮助您入门的基础。它们绝不是一个完整的解决方案,更不用说满足所有需求的灵丹妙药了。

但是由于 Apache Thrift 背后的思想之一是模块化,您只需根据需要通过更改一行代码插入另一种服务器类型即可:

TThreadedServer server(processor, serverTransport, transportFactory, protocolFactory);

根本不需要在生成器中实现它,因为

  • 所有服务器类型、传输、分层传输和支持的协议的排列太多
  • 只需更改几行代码即可轻松在所有这些不同的组件之间切换

C++ 是 AFAIK 唯一生成框架文件的语言。据我所知,没有其他语言实现了此功能。如果您想研究另一个涉及更多功能的示例,请查看 /test/cpp 下的 Thrift 测试实现。看了那段代码,很多东西都会清楚很多。