nodejs数据结构是否是设计线程安全的?

时间:2013-07-30 05:13:42

标签: javascript node.js asynchronous

在node.js相关的Web文档中读取它是单线程服务器。因此,默认情况下,所有数据结构在节点服务器中是否都是线程安全的,这让我感到困惑!

我有多个回调访问这样的全局对象:

callback1{
global_var['key'] = val;
}

callback2{
globalv_var['key'] = val;
}

'key'有时可能相同,也可能不同。 global_var是否是线程安全的? 回调,按照预期在某些事情发生时被回调,没有特定的顺序。

2 个答案:

答案 0 :(得分:3)

Node.JS包含“调度程序”。它接受Web请求并将其移交给异步处理。该调度程序是单线程的。但是调度程序为每个任务旋转一个新线程,并快速将任务移交给新线程,释放调度程序的线程以便为新请求提供服务。

如果这些任务线程保持独立(即它们不会修改彼此的状态),是的,它们是线程安全的。

答案 1 :(得分:3)

您为node.js applocation编写的所有javascript都会像在单个线程中运行一样执行。

任何多线程都发生在幕后,I / O代码和其他本机模块中。因此,无论如何都无需担心任何应用程序代码的线程安全性。