在node.js相关的Web文档中读取它是单线程服务器。因此,默认情况下,所有数据结构在节点服务器中是否都是线程安全的,这让我感到困惑!
我有多个回调访问这样的全局对象:
callback1{
global_var['key'] = val;
}
callback2{
globalv_var['key'] = val;
}
'key'有时可能相同,也可能不同。 global_var是否是线程安全的? 回调,按照预期在某些事情发生时被回调,没有特定的顺序。
答案 0 :(得分:3)
Node.JS包含“调度程序”。它接受Web请求并将其移交给异步处理。该调度程序是单线程的。但是调度程序为每个任务旋转一个新线程,并快速将任务移交给新线程,释放调度程序的线程以便为新请求提供服务。
如果这些任务线程保持独立(即它们不会修改彼此的状态),是的,它们是线程安全的。
答案 1 :(得分:3)
您为node.js applocation编写的所有javascript都会像在单个线程中运行一样执行。
任何多线程都发生在幕后,I / O代码和其他本机模块中。因此,无论如何都无需担心任何应用程序代码的线程安全性。