在我们支持多平台(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?
我尝试过在互联网上搜索,但我无法找到任何明确的信息。
答案 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方式)。