有個問題想和大家討論下,在iocp編程模型中,如果有多個IO執行緒,其中一個執行緒一次投遞多個recv操作那等到有資料到達時應該是只有次執行緒在getcopstats中會回傳吧,也就是相應的投遞通知只能相應的發送請求的執行緒得到通知
uj5u.com熱心網友回復:
有個問題想和大家討論下,在iocp編程模型中,如果有多個IO執行緒,其中一個執行緒一次投遞多個recv操作那等到有資料到達時應該是只有發送相應投遞呼叫的執行緒在getcopstats中會回傳吧(即使另一個執行緒也做了相同的操作),也就是相應的投遞通知只能相應的發送請求的執行緒得到通知,比如A執行緒發送投遞接受對方的前10k的資料此時另一個執行緒在同一個套接字上再發送接受發送者后15k資料的recv呼叫(假設A執行緒先投遞完成,B執行緒后投遞完成,且都處于pend狀態),那等完成佇列中有資料后第一個先滿足A執行緒的請求,即使只有少于10k的資料到達。然后A getcmplestats回傳,緊接著投遞下一個recv,此時執行緒B的recv請求還沒有收到資料。等過一會后有資料了,此時在呼叫getcompletionstates的A B兩個執行緒只有B才能收到資料并回傳,即使此時A是在運行中的狀態。我的理解沒問題吧uj5u.com熱心網友回復:
各位大牛能回答下這個問題嗎轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/99785.html
標籤:網絡通信
下一篇:跨路由器怎么設定網路列印機?
