勵志

勵志人生知識庫

什麼是阻塞調用

阻塞調用是指在進行某些操作時,如果這些操作需要等待結果(例如等待輸入輸出操作完成),則調用這些操作的執行緒會進入阻塞狀態,直到得到結果才會繼續執行後續的代碼。這種調用方式會導致執行緒暫時停止執行其他任務,直到阻塞操作完成。例如,在網路編程中,如果使用阻塞模式的socket進行數據接收(recv()),在沒有數據到達時,調用recv()的執行緒會一直等待,直到有數據到來才會繼續執行。

與阻塞調用相對的是非阻塞調用,它允許執行緒在無法立即得到結果時繼續執行其他任務,而不是等待。例如,非阻塞模式的socket傳送(send())操作會立即返回,即使數據尚未傳送出去,執行緒也不會阻塞。

需要注意的是,阻塞和非阻塞的概念與同步和異步的概念不同。同步調用通常意味著調用者必須等待結果返回,而異步調用則允許調用者在請求被處理時繼續執行其他任務。然而,同步和異步的區分更多地關注於訊息通信機制,即被調用者是否主動通知調用者結果。