Как работает ACE_Remote_Mutex? - PullRequest
0 голосов
/ 05 марта 2011

Я написал две небольшие программы, которые пытались получить один и тот же Remote Mutex с именем «Token»:

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

Обе они получили следующий отладочный вывод:

(3078597488) acquired The Token
(4243|3078597488) BIG PROBLEMS with get_connection: Connection refused
error on remote acquire, releasing shadow mutex.
(3078597488) released The Token, owner is no owner
(4243|3078597488) BIG PROBLEMS with get_connection: Connection refused
(3078597488) release failed: Permission denied.
(3078597488) shadow: release failed

ACE_Remote_Mutex работает только с каким-то «агентом», таким как брокер Corba?Могу ли я изменить свой код?

1 Ответ

0 голосов
/ 26 марта 2011

Remote_Mutex использует Token Service для получения блокировки. Служба токенов не является службой CORBA, но играет аналогичную ей роль. Вот пример записи svc.conf, которая запускает Token Service динамически:

dynamic Token_Service Service_Object * 
          ../lib/netsvcs:_make_ACE_Token_Acceptor() 
          "-p 10202" 
...