2009-07-24 13 views
3

在我們的支持多平臺(Linux,Solaris和Windows)並以C和C++編碼的項目中,我們使用ONC RPC用於IPC。 最近需要讓應用程序服務器在兩個不同的程序編號上工作。在ONC RPC中,從兩個線程調用svc_run()是否有效,使用不同的程序編號註冊?

我已經嘗試過以下測試。

創建多線程應用程序 在創建兩個工作線程

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,它的工作對我罰款。

但它是有效的註冊兩個程序no和在兩個不同的線程中調用svc_run?

我試過搜索互聯網,但我無法找到任何明確的信息。

+0

你有任何新的信息嗎? – 2010-02-24 09:19:43

回答

2

這似乎是合乎邏輯的,儘管我從來沒有嘗試過。

請不rpcgen IDL編譯器(這是從它的man頁面上的Solaris)的-M命令開關:

-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進程號 - 我的猜測是這應該表現得好像你實際上有2個不同的進程(RPC-wise)。

+0

我意識到我遲到了,但是:你所描述的只是爲了solaris。 linux中的rpcgen不支持這一點(並且在solaris中沒有`rpc_control`函數可用)。 – 2011-10-13 10:33:20

相關問題