簡體   English   中英

在ONC RPC中,從兩個線程調用svc_run()是否有效,使用不同的程序注冊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM