要求以下:線程
1.S端收到C端請求後,將C端請求加入到優先級隊列中,S端有專門的線程A來處理該隊列中的請求,該線程不阻塞,線程A從隊列中拿到請求後,會新起一個線程來執行該請求,C端的線程會阻塞,直到執行線程將結果返回。隊列
基於此,總體流程圖以下:變量
問題關鍵點:循環
1.請求線程須要阻塞,直到拿處處理結果。請求
2.處理隊列的線程不能阻塞,須要一直處理隊列中的請求。方法
3.執行線程被建立完成後,須要獨自處理請求,並將結果返回給請求線程。im
因此有兩種方法:通信
方法一:使用條件變量,來進行線程間的通訊。注意兩點:請求線程與執行線程須要在同一個條件變量上;須要在同一個mutex上加鎖。img
方法二:使用原子變量Done來進行兩個線程間的通訊,請求線程使用while循環來阻塞;while