我们使用rpcgen在Linux机器上创建了一个rpc服务器(c语言)。 当我们的程序有很多调用时,它仍会产生单个调用 线程请求。 我发现这是2004年的常见问题,有一个新的rpcgen(或其他发明者)可以解决这个问题吗?
谢谢, KOBI
答案 0 :(得分:0)
rpcgen
只会生成serialization例程。您的服务器可能被编码为具有多个线程。详细了解pthreads。
你可能不应该有太多的线程(例如最多十几个,而不是几千个)。您可以将程序设计为使用某些thread pool,或者只是拥有一组固定的工作线程,这些工作线程不断处理RPC请求(主线程负责接受连接等)。
阅读rpc(3)。您可能会考虑不在服务器中使用svc_run
,而是使用自己的方式使用线程。请注意,如果您使用线程,则需要与mutex进行同步。
你也可以考虑JSONRPC,或者让你的C程序成为一些专门的HTTP服务器(例如使用libonion)并让你的客户做HTTP个请求(可能是libcurl })。另见this。您可以考虑使用message passing架构,也许可以使用Open-MPI。
答案 1 :(得分:0)
谨防太阳版正在废弃,寻找tirpc