问题标签 [singlethreadmodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1241 浏览

java - (Servlet、线程安全)保护会话和上下文状态

参考:Head First Servlets & JSP, page 204, 第三题:

问:“实现 SingleThreadModel 的效果实际上与同步服务方法的效果相同。两者都可以在不保护会话和上下文状态的情况下使 Web 应用程序瘫痪。”

这是什么意思:“在不保护会话和上下文状态的情况下让 Web 应用程序崩溃”?他们是说实现 SingleThreadModel 不够线程安全吗?因为即使一次只能在一个 servlet 上运行一个线程,这不会阻止其他 servlet 访问和改变上下文/会话范围的变量吗?如果 Servlet 实现了 SingleThreadingModel,那么为什么需要保护会话状态?它一次只允许一个线程。我认为,即使您打开一个新的浏览器窗口,servlet 也不允许您发出两个请求。也许它们意味着不同的 Servlet 一次只有一个线程,如果它们不同步该状态,它们仍然可能破坏上下文/会话状态?

为什么类(静态)变量不是线程安全的?因为所有线程都可以访问和修改(损坏)该值?

对我来说还是有点模糊。

0 投票
2 回答
2125 浏览

c# - 如何在VS2010中创建一个STA(单线程单元)控件

我有一个托管组件的 .NET 4.0 Windows 服务。我们的项目负责人说,在某些组件上调用方法时,性能很慢。他怀疑可能是 STA 组件导致了这种性能损失。

为了测试这个理论,我被要求创建一个 STA 组件,其中一个方法接受一个整数并返回乘以 2 的整数。该组件将托管在服务中并运行测试。

可以在 C# 中创建这样的东西还是有必要在 C++ 中创建它?

如果可能的话,你能包括一些代码吗?

编辑:(代码基于韩的建议)

0 投票
2 回答
5436 浏览

java - vert.x 有多单线程?

据我了解,每个 vert.x 实例都会被分配一个事件循环。事件循环处理该特定实例的所有请求和其他任务。我认为事件循环是一个线程。当部署了多个 vert.x 实例时,每个实例都有自己的事件循环,对吗?这意味着存在多个线程(多线程)。我是这样理解的。这个单线程概念让我非常头疼。任何帮助将不胜感激。

0 投票
1 回答
103 浏览

jsp - JBoss 4.2.3 如何实现 SingleThreadModel (STM):一个 servlet 的 1 个实例或一个 servlet 的多个实例?

我正在开发一个部署到 JBoss 4.2.3 的企业应用程序。它使用 Servlet 2.5 规范。

该应用程序有一些 JSP 使用带有此指令的 SingleThreadModel (STM):<%@ page isThreadSafe="false" %>

我想知道 JBoss 4.2.3 如何实现 SingleThreadModel (STM):

  1. 它是否只有 1 个 servlet 实例并对其上的所有请求进行序列化?
  2. 或者它有多个 servlet 实例并同时处理每个请求?

我怎样才能找到这些信息?

谢谢

0 投票
1 回答
112 浏览

java - SingleThreadModel 已被弃用并且不保证线程安全,在 Servlet 中保证线程安全的最佳解决方案/设计方法是什么?

我想保证我的其中一个中的线程安全ServletSingleThreadModel已弃用且不保证线程安全。取而代之的是,我可以synchronized在我的Servlet.

你是在 Servlet 中保证线程安全的另一种方法吗?

如果是,请解释我该如何实现。

如果不是,我将采用什么设计方法来保证线程安全Servlet

0 投票
2 回答
3119 浏览

javascript - Node JS对后端API的多个并发请求

这是我的节点 js 后端 API 方法。

现在,如果多个并发请求来到这个 API,会发生什么?

据我了解,NodeJS 会为请求维护一个事件队列,并一一处理请求。

因此,不可能为两个不同的请求获得相同的时间戳。

请让我知道我的理解是否正确?


编辑1:

谷歌搜索了一段时间后,得到了这个链接,它清楚地解释了一些概念。

0 投票
0 回答
347 浏览

node.js - 当 .NET Core 仍然有上下文切换开销时,它如何与 Node.js 进行比较?

我在几个地方读到过,包括在 Stack Overflow 上的帖子,在 .NET Core 时代,Node.js 的性能不再比 .NET 更好。

我已经读过 Node.js 首先具有优势的部分原因是由于单线程模型,它没有上下文切换的开销。

但是在 .NET Core 中虽然我们await在等待 I/O 操作时使用和释放线程,但它仍然没有像 Node.js 那样的单线程模型,所以它仍然有上下文切换的负担。

我的问题是: .NET Core 在性能上如何与 Node.js 相比,而它具有 Node.js 上不存在的上下文切换开销?

0 投票
1 回答
38 浏览

javascript - 如何设置节点服务器同时运行不同的请求?

我被问到如何设置节点服务器同时运行不同的请求。问题如下:创建一个只有 1 个路由('/single')的 Web 服务器,在控制器中运行下面的代码来模拟密集的 CPU 工作:

因此,如果运行请求需要 2 秒,那么 10 个请求将在单线程模式下运行 20 秒。现在我的任务是设置服务器同时运行不同的请求,所以运行 10 个请求不会花费 20 秒,但要少得多。

在我的理解中,为了解决它,它是关于如何使用 ASYNC FUNCTION 和 setTimeout 方法,我在这里停留了几天。请帮我。