RPC多執行緒化

2022-05-02 21:57:07 字數 894 閱讀 7955

根據unp上介紹,sun rpc隨solaris 2.4提供多執行緒化的伺服器,通過向rpcgen傳遞-m引數以支援多執行緒。使得有rpcgen產生的伺服器**執行緒安全。選項-a讓伺服器根據處理新客戶請求的需要自動建立執行緒。

但linux下並不支援-a選項,-m只是使rpcgen產生的**是執行緒安全的,並不會自動建立執行緒處理請求。

測試:(rpc -m -c square.x)

伺服器端睡眠10s

bool_t

squareproc_2_svc(square_in *argp, square_out *result,

struct svc_req *rqstp)

連續3次請求

#./square_client 127.0.0.1 &

#./square_client 127.0.0.1 &

#./square_client 127.0.0.1 &

大概10s左右,列印出第乙個結果

大概再過10s左右,列印第二個結果=

再過大概5s,列印超時訊息,因總超時時間為25s

總超時:乙個客戶端等待其伺服器的應答的總時間量,對tcp,udp均有效,tcp預設30s,udp預設為-1,但square_clnt中預設傳遞25s的timeout引數;

重試超時:僅用於udp,是乙個客戶端等待期伺服器的應答期間每次重傳請求的相隔時間,我機子上rpc包的預設值為5s,unp書上的列印的預設值為15s;

可以看出加了-m後,處理請求時仍然阻塞,而不是使用多執行緒。

在不知吃-a的情況下,要想rpc伺服器以多執行緒方式處理請求。

可參照wcw的blog:

易語言多執行緒大漠多執行緒模板多執行緒初始化

多執行緒初始化,在啟動視窗後,需要首先呼叫,包括對執行緒控制代碼,視窗控制代碼,程序pid,程序狀態,異常狀態,是否暫停,是否結束的初始化,特別說明的是,為任務狀態申請記憶體空間,因為任務狀態的資料型別是文字型,防止避免多執行緒訪問文字型變數引發的資料衝突,預先分配好記憶體位址。511遇見易語言多執...

多執行緒 多執行緒原理

我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...

多執行緒(一) tomcat 多執行緒

web server允許的最大執行緒連線數還受制於作業系統的核心引數設定,通常windows是2000個左右,linux是1000個左右。1.編輯tomcat安裝目錄下的conf目錄下的server.xml檔案 maxthreads 150 表示最多同時處理150個連線,tomcat使用執行緒來處理...