3

マルチプラットフォーム (Linux、Solaris、および Windows) をサポートし、C および C++ でコーディングされている私たちのプロジェクトでは、IPC にONC RPCを使用しています。最近では、アプリケーション サーバーを 2 つの異なるプログラムで動作させる必要があります。

テストのために次のことを試しました。

マルチスレッドアプリケーションを作成し、その中に2つのワーカースレッドを作成しました

    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 でこれを試しましたが、問題なく動作しています。

しかし、2 つのプログラム no を登録し、2 つの異なるスレッドで svc_run を呼び出すことは有効ですか?

インターネットで検索してみましたが、これに関する明確な情報を見つけることができませんでした。

4

1 に答える 1

2

自分で試したことはありませんが、これが可能であることは論理的に思えます。

IDL コンパイラの-Mコマンド スイッチは使用しないでください(これは、 Solaris のページからのものです)。rpcgenman

 -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 つのイベント ループを登録する場合、これは実際に 2 つの異なるプロセスがあるかのように動作するはずです (RPC に関して)。

于 2009-12-14T09:13:02.677 に答える