我知道node.js程序中只能运行一个线程。
如果此线程被阻止,例如,等待键盘输入,它是否仍然可以响应其他事件?
是否有后台事件循环线程来分发事件处理?
答案 0 :(得分:1)
如果此线程被阻止,它仍然可以响应其他事件吗?
它无法立即响应,但希望这些事件在您最终完成阻止时排队等待处理。
是否有后台事件循环线程来分发事件处理?
没有后台线程。事件也由“主”(唯一)线程处理。
规则是在node.js中永不阻止。如果某些事情需要时间,则必须通过异步回调来处理它。如果要同时执行CPU繁重的操作,则必须使用多个进程(并在异步回调中接收结果)。
所有这一切的好处是你不必担心同步多个线程(因为只有一个)。这使编程更安全(但你必须习惯于到处回调)。