0

「トークン」という名前の同じリモート ミューテックスを取得しようとする 2 つの小さなプログラムを作成しました。

ACE_Remote_Mutex token("The Token", 1, 1);
token.acquire();
ACE_OS::sleep(5);
token.release();
return 0;

どちらも次のデバッグ出力を取得しました。

(3078597488) トークンを取得
(4243|3078597488) get_connection の大きな問題: 接続が拒否されました
リモート取得でのエラー、シャドウ ミューテックスの解放。
(3078597488) リリースされたトークン、所有者は所有者ではありません
(4243|3078597488) get_connection の大きな問題: 接続が拒否されました
(3078597488) リリースに失敗しました: 権限が拒否されました。
(3078597488) シャドウ: リリースに失敗しました

ACE_Remote_Mutex は、Corba ブローカーのようなある種の「エージェント」でのみ機能しますか? コードを変更できますか?

4

1 に答える 1

0

Remote_Mutex はトークン サービスを使用してロックを取得します。トークン サービスは CORBA サービスではありませんが、同様の役割を果たします。トークン サービスを動的に開始する svc.conf エントリの例を次に示します。

dynamic Token_Service Service_Object * 
          ../lib/netsvcs:_make_ACE_Token_Acceptor() 
          "-p 10202" 
于 2011-03-26T18:29:45.803 に答える