2017-09-08 41 views
0

當多個客戶端同時對GRPC服務器進行同一呼叫時,服務器是否異步地應答這些呼叫?如果我想要服務器同步處理呼叫,我應該使用某種類型的鎖定,如AsyncSemaphore?使用這種模式,我可以「持有」一個正在進行的呼叫多長時間(例如,兩個客戶端同時進行同一呼叫,一個呼叫阻塞,直到第一個客戶端的呼叫被應答),直到GRPC取消它或客戶端斷開連接? GRPC在這方面是否有關鍵超時?併發但同步的GRPC服務器呼叫處理

+0

您是否實施了GRPC服務器?它是別人的代碼嗎?它在運行什麼語言/平臺? – mjwills

+0

這是我的代碼,語言是C# – liondog

+0

當你嘗試它時發生了什麼?它是不是同時回答它們? – mjwills

回答

0

gRPC將以異步方式應答呼叫。如果你想要一個服務器只服務一次調用,你應該在你的處理程序中使用一個鎖。

+0

詳細闡述一下:你應該同時接受調用(這裏沒有做什麼,這是默認行爲),並在你的處理程序中實現同步邏輯 - 它不一定是鎖,但你可以使用類似的基元(例如將請求添加到同步處理隊列並等待請求完成)。只要您在客戶端設置了足夠長的截止日期,正在進行的呼叫就會保持有效。 –