[英]In ONC RPC, is it valid to call svc_run() from two threads, registered with different program no?
在我們支持多平台(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?
我試過在互聯網上搜索,但我無法找到任何有關此問題的明確信息。
這是可能的,盡管我自己從未嘗試過。
請不要使用rpcgen
IDL編譯器的-M
命令開關(這是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方式)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.