为了账号安全,请及时绑定邮箱和手机立即绑定

同步会启动新的线程吗

同步会启动新的线程吗

慕标5832272 2018-09-12 08:06:27
相信大家都知道有同步和异步两种调用方式.区别我就不多说了,只想请教一下: 同步调用的时候(比方说invoke),此时,主程序的线程会处于阻塞状态,等待被调用方完成后,才可以继续执行。但此时,主线程既然都阻塞了,是不是应该有个新的线程去执行被调用方的操作呢?好多都说,异步才会在线程池里启动一个新的线程,同步不会,使用相同线程。可是不会的话,这个线程已经阻塞了,还怎么继续使用呢?
查看完整描述

2 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

不会。阻塞是指调用方必须等待被调用返回后才能继续执行下一条指令。

你应该把线程想象成生产流水线,流水线本身是不能执行操作的,它只是预设了一定数量的加工点,OS会驱动流水线前进,同步调用即是加工点必须在流水线上完成,那么没有完成之前,这条流水线是停滞的,它无法前进到下一个加工点;异步调用即是加工点只是标记该工序应该在另一条生产流水线上完成,当前的流水线可以继续前进到下一个加工点,而不用等待另一条流水线上的加工完成。


查看完整回答
反对 回复 2018-09-16
?
忽然笑

TA贡献1806条经验 获得超5个赞

同学,这个是操作系统级别的问题,操作系统已经处理了该功能。在同步完成后,会有个回调函数来激活主线程的运行。。。

查看完整回答
反对 回复 2018-09-16
  • 2 回答
  • 0 关注
  • 387 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信