Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejs数据结构在设计上是线程安全的吗?_Javascript_Node.js_Asynchronous - Fatal编程技术网

Javascript nodejs数据结构在设计上是线程安全的吗?

Javascript nodejs数据结构在设计上是线程安全的吗?,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,读入node.js相关的web文档,说明它是单线程服务器。因此,在节点服务器中,默认情况下所有数据结构是否都是线程安全的,这让我感到困惑 我有多个回调访问全局对象,如下所示: callback1{ global_var['key'] = val; } callback2{ globalv_var['key'] = val; } “键”有时可能相同,也可能不同。全局变量是线程安全的吗? 回调,正如预期的那样,在完成某件事情时会被回调,没有特定的顺序。Node.JS包含一个“dispatcher

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

我有多个回调访问全局对象,如下所示:

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

callback2{
globalv_var['key'] = val;
}
“键”有时可能相同,也可能不同。全局变量是线程安全的吗? 回调,正如预期的那样,在完成某件事情时会被回调,没有特定的顺序。

Node.JS包含一个“dispatcher”。它接受web请求并将其交给异步处理。该调度器是单线程的。但是,调度器为每个任务启动一个新线程,并迅速将任务移交给新线程,从而释放调度器的线程来服务新请求


在某种程度上,这些任务线程是分开的(即它们不修改彼此的状态),是的,它们是线程安全的。

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


任何多线程都发生在后台、I/O代码和其他本机模块中。因此,不必担心任何应用程序代码的线程安全。

回调仍然会一个接一个地执行。没有两个回调同时在全局对象上运行。可能相关:因此后台线程在执行实际工作之前在主线程上调用。两个工作块不能同时运行。有趣。类似于等待用户输入的桌面应用程序。并在UI线程中输入启动操作。