【C++多线程系列】【七】实现经典的C/S架构
生活随笔
收集整理的這篇文章主要介紹了
【C++多线程系列】【七】实现经典的C/S架构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
要求如下:
1.S端收到C端請求后,將C端請求加入到優先級隊列中,S端有專門的線程A來處理該隊列中的請求,該線程不阻塞,線程A從隊列中拿到請求后,會新起一個線程來執行該請求,C端的線程會阻塞,直到執行線程將結果返回。
?
基于此,整體流程圖如下:
?
問題關鍵點:
1.請求線程需要阻塞,直到拿到處理結果。
2.處理隊列的線程不能阻塞,需要一直處理隊列中的請求。
3.執行線程被創建完成后,需要獨自處理請求,并將結果返回給請求線程。
?
所以有兩種方法:
方法一:使用條件變量,來進行線程間的通信。注意兩點:請求線程與執行線程需要在同一個條件變量上;需要在同一個mutex上加鎖。
方法二:使用原子變量Done來進行兩個線程間的通信,請求線程使用while循環來阻塞;
轉載于:https://my.oschina.net/u/3800567/blog/1802446
總結
以上是生活随笔為你收集整理的【C++多线程系列】【七】实现经典的C/S架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: snpeff注释变异(variants)
- 下一篇: 聊聊WebClient的LoadBala