对象A的工作work1 work2
同步执行:
A只能先干完work1,才能干work2;
异步执行:
A先干work1的一部分(没有做完),就可以干work2的一部分;
这里有一个问题:
A在执行work2的时候,不能执行work1,那么work1在被干的时候,是A在干还是说可以其他的对象干呢?
===
我这里说的异步,不是仅仅指的js中的异步,在其他语言里面也有异步;js中一般会把work1给其他的进程做,但是其他的语言呢?是否可以由A 频繁切换于work1和work2来做呢?
对象A的工作work1 work2
同步执行:
A只能先干完work1,才能干work2;
异步执行:
A先干work1的一部分(没有做完),就可以干work2的一部分;
这里有一个问题:
A在执行work2的时候,不能执行work1,那么work1在被干的时候,是A在干还是说可以其他的对象干呢?
===
我这里说的异步,不是仅仅指的js中的异步,在其他语言里面也有异步;js中一般会把work1给其他的进程做,但是其他的语言呢?是否可以由A 频繁切换于work1和work2来做呢?
怎么各种奇怪的问题都有...
你烧上水之后去开了洗衣机,那烧水和洗衣服这两件事算你干的吗?
如果你说算,那你的问题的答案就是是A干的。
如果你说不算,那你的问题的答案就是具体执行器干的。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
如果你的work1是执行数据请求,那么浏览器会接管你发送请求后的事情,当数据返回后会通过一些方式通知到js回调。
Node.js中只有JS线程是单线程,底部还有其他线程池libuv。在执行中JS线程会把任务交给底部的libuv去执行耗时任务,同时注册回调任务,完成后,libuv通过回调函数通知JS线程。