相信大家都知道有同步和異步兩種調用方式.區別我就不多說了,只想請教一下: 同步調用的時候(比方說invoke),此時,主程序的線程會處于阻塞狀態,等待被調用方完成后,才可以繼續執行。但此時,主線程既然都阻塞了,是不是應該有個新的線程去執行被調用方的操作呢?好多都說,異步才會在線程池里啟動一個新的線程,同步不會,使用相同線程??墒遣粫脑挘@個線程已經阻塞了,還怎么繼續使用呢?
2 回答
紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
不會。阻塞是指調用方必須等待被調用返回后才能繼續執行下一條指令。
你應該把線程想象成生產流水線,流水線本身是不能執行操作的,它只是預設了一定數量的加工點,OS會驅動流水線前進,同步調用即是加工點必須在流水線上完成,那么沒有完成之前,這條流水線是停滯的,它無法前進到下一個加工點;異步調用即是加工點只是標記該工序應該在另一條生產流水線上完成,當前的流水線可以繼續前進到下一個加工點,而不用等待另一條流水線上的加工完成。
- 2 回答
- 0 關注
- 446 瀏覽
添加回答
舉報
0/150
提交
取消
