2009-07-24 4 views
3

В нашем проекте, который поддерживает многоплатформенные (Linux, Solaris и Windows) и закодированные на C и C++, мы используем ONC RPC для IPC. В последнее время существует требование, чтобы сервер приложений работал на двух разных программах нет.В ONC RPC допустимо ли вызывать svc_run() из двух потоков, зарегистрированных в другой программе?

Я попробовал следующее, чтобы проверить.

Создано многопоточного приложения В который создал два рабочих потоков

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, и это работает прекрасно для меня.

Но действительно ли зарегистрировано две программы no и вызывает svc_run в двух разных потоках?

Я пробовал искать в Интернете, но я не смог найти четкой информации об этом.

+0

У вас есть новая информация? –

ответ

2

Кажется логичным, что это возможно, хотя я никогда не пробовал это сам.

Пожалуйста, не -M команды переключатель rpcgen IDL компилятора (это от его man страницы на Solaris):

-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-мудрый).

+0

Я понимаю, что опаздываю на вечеринку, но: То, что вы описываете, предназначено только для соляриев. rpcgen в linux не поддерживает это (и не имеет функции 'rpc_control', доступной в solaris). –