在Linux中,阻塞(Blocking)和非阻塞(Non-Blocking)主要是指I/O操作的方式。
阻塞(Blocking):當(dāng)進(jìn)行一個(gè)阻塞I/O操作時(shí),應(yīng)用程序會(huì)一直等待,直到操作完成或出現(xiàn)錯(cuò)誤。在這期間,應(yīng)用程序無(wú)法進(jìn)行其他任務(wù),會(huì)一直停滯在這個(gè)I/O操作上。
非阻塞(Non-Blocking):當(dāng)進(jìn)行一個(gè)非阻塞I/O操作時(shí),應(yīng)用程序會(huì)立即返回,不會(huì)等待操作完成或出現(xiàn)錯(cuò)誤。如果操作能夠立即完成,應(yīng)用程序可以繼續(xù)執(zhí)行其他任務(wù)。否則,應(yīng)用程序可以通過(guò)不斷查詢操作狀態(tài)(輪詢)或通過(guò)回調(diào)函數(shù)來(lái)等待I/O操作完成。
總結(jié)起來(lái),阻塞模式下,應(yīng)用程序會(huì)一直等待I/O操作完成;而非阻塞模式下,應(yīng)用程序會(huì)立即返回,不會(huì)等待I/O操作完成。非阻塞模式通常需要應(yīng)用程序主動(dòng)查詢或回調(diào)來(lái)獲取操作完成的狀態(tài)。