在ONC RPC中,从两个线程调用svc_run()是否有效,使用不同的程序注册?

时间:2009-07-24 16:47:47

标签: c++ c rpc

在我们支持多平台(Linux,Solaris和Windows)并使用C和C ++编码的项目中,我们使用 ONC RPC 进行IPC。 最近需要一个应用程序服务器来处理两个不同的程序。

我已经尝试了以下测试。

创建了一个多线程应用程序     在其中创建了两个工作线程

    In first thread I’m
         a) Creating a TCP transport
         b) Registering the transport
         c) Calling svc_run

    In second thread I’
         a) Creating a second TCP transport
         b) Registering the transport with a different program no
         c) Calling svc_run*

我在Red Hat Linux 4上试过了,这对我来说很好。

但注册两个程序是否有效并在两个不同的线程中调用svc_run?

我尝试过在互联网上搜索,但我无法找到任何明确的信息。

1 个答案:

答案 0 :(得分:2)

这是可能的,这是可能的,虽然我自己从未尝试过。

请不要-M IDL编译器的rpcgen命令开关(这是来自Solaris上的man页面):

 -M          Generates multithread-safe stubs for passing
             arguments   and   results   between  rpcgen-
             generated code and user written  code.  This
             option  is useful  for users who want to use
             threads in their code.

如果代理/存根代码是线程安全的,并且您注册了两个具有2个不同RPC进程号的事件循环 - 我猜这应该表现得好像您实际上有两个不同的进程(RPC方式)。