有誰能和我一起分析一下面的題目怎么做?
現有一網路通信模塊,由三個執行緒組成:
1.接收執行緒recvThread負責從全域連接句柄handle接收資料
2.發送執行緒sendThread負責向全域連接句柄handle發送資料
3.斷線重連執行緒reconnThread負責在連接故障時重新連接并重繪全域連接句柄handle
連接句柄handle支持handle.recv和handle.send,在網路例外時recv和send會立即回傳-1。
執行緒函式偽代碼如下
recvThread(){
while(true){
ret = handle.recv(&data);
if(ret == -1){
reconnet();
sleep(1);
continue;
}
dataProc(data);
}
}
sendThread(){
while(true){
data = someProc();
ret = handle.send(data);
if(ret == -1){
reconnet();
sleep(1);
continue;
}
}
}
reconnet(){
//啟動獨立的執行緒運行reconnThread
startThread(reconnThread);
}
reconnThread(){
reconnect(&handle);
}
1.請用自然語言描述上述代碼有怎樣的同步互斥問題。
2.請用對上述代碼進行修改,解決同步互斥問題。
uj5u.com熱心網友回復:
這種情況其實可以考慮直接用一個回圈佇列,設定讀寫指標,確保讀指標始終落后于寫指標即可,完全不用鎖或其它同步互斥,效率還很高。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/14242.html
標籤:C++ 語言
