【问题标题】:rpcgen for Linuxrpcgen for Linux
【发布时间】:2014-10-22 09:19:42
【问题描述】:

我们已经使用 rpcgen 在 Linux 机器(c 语言)上创建了一个 rpc 服务器。 当我们的程序有很多调用时,它仍然会导致一个 线程请求。 我看到这是 2004 年的常见问题,有一个新的 rpcgen(或其他生成器)解决了这个问题?

谢谢, 科比

【问题讨论】:

  • 我相信你的问题是边界线或者可能是题外话,因为你没有显示任何代码。您还应该编辑您的问题,以详细说明您的服务器在做什么。

标签: linux rpc


【解决方案1】:

rpcgen 将简单地生成serialization 例程。您的服务器可能被编码为具有多个线程。详细了解pthreads

您可能不应该有太多线程(例如,最多十几个,而不是数千个)。您可以将您的程序设计为使用一些thread pool,或者只是让一组固定的工作线程不断处理 RPC 请求(主线程只负责接受连接等)。

阅读rpc(3)。你可能会考虑不在你的服务器中使用svc_run,而是用你自己的方式使用线程。请注意,如果您使用线程,则需要同步,可能与mutex 同步。

您也可以考虑JSONRPC,或者让您的C 程序成为一些专门的HTTP 服务器(例如使用libonion)并让您的客户端执行HTTP 请求(可能使用libcurl)。另见this。您可能会考虑使用message passing 架构,或许使用Open-MPI

【讨论】:

  • 关于 rpcgen:在 AIX 和 Solaris 上,我设法创建了一个多线程服务器,而无需对生成的代码进行任何更改。
【解决方案2】:

注意sun版被弃用,找tirpc

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 2023-03-17
    • 1970-01-01
    • 2021-06-20
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    相关资源
    最近更新 更多