我们使用rpcgen在Linux机器上创建了一个rpc服务器(c语言)。 当我们的程序有很多调用时,它仍然会产生一个 线程请求。 我发现这是 2004 年的常见问题,有一个新的 rpcgen (或其他生成器)解决了这个问题吗?
谢谢, 科比
最佳答案
rpcgen
将简单地生成 serialization例程。您的服务器可能被编码为具有多个线程。了解更多 pthreads .
您可能不应该有太多线程(例如最多十几个,而不是数千个)。您可以设计您的程序以使用一些 thread pool ,或者只是拥有一组固定的工作线程来连续处理 RPC 请求(主线程只负责接受连接等)。
阅读rpc(3) 。您可能会考虑不在服务器中使用svc_run
,而是以您自己的方式使用线程进行操作。请注意,如果您使用线程,则需要同步,也许使用 mutex 。
您也可以考虑JSONRPC ,或者也许让您的 C 程序成为一些专门的 HTTP 服务器(例如使用 libonion )并让您的客户端执行 HTTP 。请求(可能使用 libcurl )。另请参阅this 。您可能会考虑 message passing建筑,也许有 Open-MPI .
关于linux - Linux 下的 rpcgen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504161/