2014-10-22 74 views
-1

我們已經使用rpcgen在Linux機器上創建rpc服務器(c語言)。 當有很多調用我們的程序時,它仍然會產生一個 線程請求。 從2004年我看到它是一個常見問題,有一個新的rpcgen(或其他genarator)解決了這個問題?rpcgen for Linux

感謝, 了Kobi

+0

我相信你的問題是邊界線或者是題外話這裏,因爲你不顯示任何代碼。你也應該編輯你的問題來解釋你的服務器在做什麼。 – 2014-10-22 09:42:47

回答

0

rpcgen只會產生serialization程序。您的服務器可能被編碼爲具有多個線程。瞭解更多關於pthreads

你可能不應該有太多的線程(例如最多一打,而不是幾千)。你可以設計你的程序來使用一些thread pool,或者簡單地有一組固定的工作線程持續處理RPC請求(主線程只負責接受連接等)。

閱讀rpc(3)。你可能會考慮在你的服務器中不使用svc_run,而是用線程自己做。請注意,如果您使用線程,則需要與mutex同步。

你也可以考慮JSONRPC,或者使你的C程序(例如使用libonion)一些專門的HTTP服務器和你的客戶做HTTP請求(可能與libcurl)。另見this。你可能會考慮一個message passing架構,也許與Open-MPI

+0

關於rpcgen:在AIX和Solaris上,我設法創建了一個多線程服務器,沒有任何更改生成的代碼。 – kobi 2014-10-22 11:10:31

+0

然後或許嘗試在某處找到更新的rpcgen ... – 2014-10-22 11:13:26

0

當心陽光版本被拋棄,尋找TIRPC