socket api阻塞情況分析

2021-10-24 11:10:03 字數 419 閱讀 1826

connect:激發三次握手,僅在連線成功或出錯時才返回。有四種結果。沒收到響應會觸發超時錯誤;收到rst觸發硬錯誤;路由不可達錯誤;成功。可以使用非阻塞的connect,通過多次connect或是select判斷是否connect成功。

listen:把乙個未連線的套接字轉換成乙個被動套接字,指示核心應接受指向該套接字的連線請求。不存在阻塞。

accept:由tcp伺服器呼叫,用於從已完成連線佇列頭返回下乙個已完成佇列。如果已完成隊列為空,程序被投入睡眠。(預設阻塞,同樣可以設定非阻塞而根據select輔助判斷是否成功accept)

close:把改套接字標記成已關閉,然後立即返回到呼叫程序,立即返回表明是非阻塞的。這裡只是把相應描述符的引用計數值減一,如果引用計數值仍大於0,是不會引發tcp連線終止。

shutdown:傳送乙個fin訊號,觸發四次揮手。

情況分析3 5

1.申請6月學位,3月20日是否必須送審?最晚能晚到幾號。如果 送出去,我還能繼續修改嗎?可以推遲幾天,具體等通知,送出去,理論上能修改。最多推遲到4月初。2.如果碩士6月才送審,那麼申請學位的日期是?這種情況是否算延期畢業。理論上來說,6月送審,只能申請到9月的學位,這種情況應該算延期。但是nju...

redis阻塞處理分析

1.內因 a.api或資料結構使用不合理 如 對乙個包含上萬元素的hash結構執行hgetall操作,資料量大且命令複雜度o n 必然阻塞 b.慢查詢 和很多關係型資料庫 例如 mysql 一樣,redis 也提供了慢查詢日誌記錄,redis 會把命令執行時間超過 slowlog log slowe...

由淺入深分析阻塞佇列

arraybolckingqueue 由陣列結構組成的有界阻塞佇列。內部構造是陣列,具有陣列的特性。public arrayblockingqueue int capacity public arrayblockingqueue int capacity,boolean fair 可以初始化佇列 且...