Node中console.log到底是异步还是同步的

Node中console.log到底是异步还是同步的,第1张

那么在Nodejs环境中consolelog的执行是异步还是同步的呢?
我们首先要知道Nodejs中实现consolelog的原理
function log() { processstdoutwrite( utilformatapply(this, arguments); )}
那么这篇文章就等同于问processstdoutwrite是同步还是异步的?
其实官方文档已经给出了答案,A note on process I/O
processstdout和processstderr是根据系统环境来判定的同步还是异步的
Files: synchronous on Windows and Linux
TTYs (Terminals): asynchronous on Windows, synchronous on Unix
Pipes (and sockets): synchronous on Windows, asynchronous on Unix
那么consolelog也是根据系统环境来判定同步还是异步的。
那么这个同步还是异步对我们程序有影响吗?
我们知道同步写入阻止事件循环,直到写入完成为止。这可以在输出到一个文件的情况下这几乎是瞬间完成的,但系统高负载下,比如管道不是在接收末端读取,或缓慢的终端或文件系统,其可能的事件循环受阻的次数足够多,足够长的时间,有严重的负面影响。在向交互式终端会话写入时,这可能不是问题,但在对流程输出流进行生产日志记录时,考虑这一点尤为重要。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10850047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存