gpt4 book ai didi

javascript - nodejs中的并发模型

转载 作者:IT老高 更新时间:2023-10-28 22:00:13 27 4
gpt4 key购买 nike

有谁知道 nodejs 中的内存和线程模型是什么?

特别是 ii++ 是原子的吗?在 Java 1.5、Java 1.4、C 中,iivolatile 还是完全没有?

最佳答案

了解 node 和 V8 如何交互很有用。 Node 处理等待来自操作系统的 I/O 或计时器。当 Node 从 I/O 或计时器唤醒时,它通常有一些 JavaScript 回调要调用。当 node 运行这些回调时,控制权被传递给 V8,直到 V8 返回 node。

所以,如果你这样做 var ii = 1; ii++;,你永远不会发现 ii 不是 2。所有的 JavaScript 都会运行直到完成,然后控制权被传递回 Node 。如果你做 doSomething(); doSomething(); 将始终运行 doSomething 两次,并且在第二次调用 doSomething 返回之前不会返回 Node 的事件循环。这意味着您可以完全锁定 Node ,避免像这样的简单错误:

for (var i=0 ; i >= 0 ; i++) {}

这与您注册了多少 I/O 回调、设置为关闭的计时器或等待读取的套接字无关。在 V8 从那个无限循环返回之前, Node 不再工作。

这也是 node 编程如此美妙的部分原因。您永远不必担心锁定。没有竞争条件或关键部分。您的 JavaScript 代码只有一个线程运行。

关于javascript - nodejs中的并发模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com