【问题标题】:Are nodejs data-structures thread-safe by design?nodejs 数据结构在设计上是线程安全的吗?
【发布时间】:2013-07-30 02:42:05
【问题描述】:

读入一个与 node.js 相关的 web 文档,它是一个单线程服务器。所以让我感到困惑的是,节点服务器中的所有数据结构是否默认都是线程安全的!

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

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

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

'key' 有时可能相同,也可能不同。 global_var 会是线程安全的吗? 回调,按预期在完成某事时被回调,没有特定的顺序。

【问题讨论】:

标签: javascript node.js asynchronous


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 所以后台线程在做实际工作之前调用主线程。并且两个工作块不能同时运行。有趣的。类似于等待用户输入的桌面应用程序。该输入会在 UI 线程中启动操作。
    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 2010-12-31
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多