|
|
1
9
node.js的关键在于它是事件驱动的。所有代码都在单个线程的事件处理程序中运行。没有并发性问题,因为代码没有并发运行。缺点是每个事件处理程序必须快速退出,因为它会阻塞其他事件。 在您的示例中,代码将启动磁盘IO并立即退出。node.js基础结构将通过运行事件处理程序通知程序IO操作已完成。计时器事件将在IO事件之前或之后调用,但不能同时调用。 |
|
|
2
3
javascript是单线程的。如果您的函数应该执行(基于您调用settimer的方式),并且父代码仍在运行,那么在父代码完成之前,该函数将不会执行。 |
|
|
3
2
只有一个线程;请参见: Node.js on multi-core machines 我推测这是因为底层V8 JavaScript引擎不支持多个线程,因为通常情况下,JavaScript在浏览器中执行(在Windows中,只有一个UI线程),并且不支持多个线程。 |
|
|
4
1
在javascript中有一个叫做 Run-to-Completion 这可以确保如果代码正在执行,它会在任何其他(异步)代码运行之前完全执行,因此不会出现并发问题。 对于您的示例,每当调用计时器回调时,它将完全执行,并且不会在中间预先清空以执行其他代码。 见 Why no concurrency control tool in javascript 了解更多详细信息。 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
H3007 · 并发运行python子进程似乎不是并发的 2 年前 |
|
|
The Oddler · TVar会阻止读取直到更改吗? 2 年前 |
|
|
Wang Tuma · 使用信号量的c++并发问题:按顺序打印 2 年前 |
|
|
Marcel Batista · 在不同线程中更新密钥时的字典线程安全 2 年前 |
|
|
rico · 当volatile关键字真的是必要的? 2 年前 |