使用阻塞长同步操作会暂停 Node.js 中的所有用户吗?

2023-12-29

如果我有一个 SMTP 服务器(例如haraka https://github.com/haraka/Haraka)或网络服务器(如Express https://github.com/strongloop/express)使用 Node.js 并且我必须使用无法转换为异步的同步函数,会发生什么?

如果我必须以同步方式发出 HTTP 请求,服务器将挂起给所有用户,直到 http 请求完成或仅挂起给当前用户/电子邮件?所有用户的处理都会暂停吗?


要理解您问题的答案,您确实需要了解node.js事件循环 https://stackoverflow.com/questions/10680601/nodejs-event-loop。我强烈建议访问该 SO 链接并关注其中的一些链接。

If you must执行同步操作,请注意yes,同步调用将阻止所有其他请求that过程。如果您希望同时为多个客户端/远程提供服务,那么您肯定会想要使用集群模块 https://nodejs.org/api/cluster.html烘焙到 Node.js 中以生成并发进程。

另外,如果您的同步操作足够慢,足以影响您的 QoS,那么熟悉一下是一个非常明智的主意process.nextTick并防止您的进程在等待同步操作完成时完全停止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用阻塞长同步操作会暂停 Node.js 中的所有用户吗? 的相关文章

随机推荐