使用Node.js *同步功能时(我明白你不应该这样做,以及原因),什么(如果有的话)后台进程继续运行?
例如,如果我使用http.createServer,并且从我调用fs.writeFileSync()的其中一个请求中,服务器是否会在写入正在进行时继续为新客户端提供服务(不仅仅是接受连接,但处理整个请求)?即writeFileSync()会阻塞整个进程,还是只阻止当前的调用链?
答案 0 :(得分:0)
基本上使用任何* Sync功能的效果只会阻止进程,因为长时间运行的javascript会。运行那些*同步,意味着当进程等待它们完成它时,它只是坐着而什么都不做。如果您使用这些函数的异步计数器部分,当进程等待它们完成时,它将处理其他待处理事件,例如要处理的新http请求。
如果您正在运行http服务器并调用* Sync函数,则当* Sync函数运行时,此时所有新的http请求将排队等待您当前的javascript和* Sync函数执行完毕后处理。
以下是node documentation的引用:
在繁忙的进程中,强烈建议程序员使用这些调用的异步版本。同步版本将阻止整个过程,直到它们完成 - 停止所有连接。