相信大家都知道有同步和异步两种调用方式.区别我就不多说了,只想请教一下: 同步调用的时候(比方说invoke),此时,主程序的线程会处于阻塞状态,等待被调用方完成后,才可以继续执行。但此时,主线程既然都阻塞了,是不是应该有个新的线程去执行被调用方的操作呢?好多都说,异步才会在线程池里启动一个新的线程,同步不会,使用相同线程。可是不会的话,这个线程已经阻塞了,还怎么继续使用呢?
2 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
不会。阻塞是指调用方必须等待被调用返回后才能继续执行下一条指令。
你应该把线程想象成生产流水线,流水线本身是不能执行操作的,它只是预设了一定数量的加工点,OS会驱动流水线前进,同步调用即是加工点必须在流水线上完成,那么没有完成之前,这条流水线是停滞的,它无法前进到下一个加工点;异步调用即是加工点只是标记该工序应该在另一条生产流水线上完成,当前的流水线可以继续前进到下一个加工点,而不用等待另一条流水线上的加工完成。
- 2 回答
- 0 关注
- 400 浏览
添加回答
举报
0/150
提交
取消