问题标签 [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.
java - (Servlet、线程安全)保护会话和上下文状态
参考:Head First Servlets & JSP, page 204, 第三题:
问:“实现 SingleThreadModel 的效果实际上与同步服务方法的效果相同。两者都可以在不保护会话和上下文状态的情况下使 Web 应用程序瘫痪。”
这是什么意思:“在不保护会话和上下文状态的情况下让 Web 应用程序崩溃”?他们是说实现 SingleThreadModel 不够线程安全吗?因为即使一次只能在一个 servlet 上运行一个线程,这不会阻止其他 servlet 访问和改变上下文/会话范围的变量吗?如果 Servlet 实现了 SingleThreadingModel,那么为什么需要保护会话状态?它一次只允许一个线程。我认为,即使您打开一个新的浏览器窗口,servlet 也不允许您发出两个请求。也许它们意味着不同的 Servlet 一次只有一个线程,如果它们不同步该状态,它们仍然可能破坏上下文/会话状态?
为什么类(静态)变量不是线程安全的?因为所有线程都可以访问和修改(损坏)该值?
对我来说还是有点模糊。
c# - 如何在VS2010中创建一个STA(单线程单元)控件
我有一个托管组件的 .NET 4.0 Windows 服务。我们的项目负责人说,在某些组件上调用方法时,性能很慢。他怀疑可能是 STA 组件导致了这种性能损失。
为了测试这个理论,我被要求创建一个 STA 组件,其中一个方法接受一个整数并返回乘以 2 的整数。该组件将托管在服务中并运行测试。
可以在 C# 中创建这样的东西还是有必要在 C++ 中创建它?
如果可能的话,你能包括一些代码吗?
编辑:(代码基于韩的建议)
java - vert.x 有多单线程?
据我了解,每个 vert.x 实例都会被分配一个事件循环。事件循环处理该特定实例的所有请求和其他任务。我认为事件循环是一个线程。当部署了多个 vert.x 实例时,每个实例都有自己的事件循环,对吗?这意味着存在多个线程(多线程)。我是这样理解的。这个单线程概念让我非常头疼。任何帮助将不胜感激。
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 个 servlet 实例并对其上的所有请求进行序列化?
- 或者它有多个 servlet 实例并同时处理每个请求?
我怎样才能找到这些信息?
谢谢
java - SingleThreadModel 已被弃用并且不保证线程安全,在 Servlet 中保证线程安全的最佳解决方案/设计方法是什么?
我想保证我的其中一个中的线程安全Servlet
。SingleThreadModel
已弃用且不保证线程安全。取而代之的是,我可以synchronized
在我的Servlet
.
你是在 Servlet 中保证线程安全的另一种方法吗?
如果是,请解释我该如何实现。
如果不是,我将采用什么设计方法来保证线程安全Servlet
?
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 上不存在的上下文切换开销?
javascript - 如何设置节点服务器同时运行不同的请求?
我被问到如何设置节点服务器同时运行不同的请求。问题如下:创建一个只有 1 个路由('/single')的 Web 服务器,在控制器中运行下面的代码来模拟密集的 CPU 工作:
因此,如果运行请求需要 2 秒,那么 10 个请求将在单线程模式下运行 20 秒。现在我的任务是设置服务器同时运行不同的请求,所以运行 10 个请求不会花费 20 秒,但要少得多。
在我的理解中,为了解决它,它是关于如何使用 ASYNC FUNCTION 和 setTimeout 方法,我在这里停留了几天。请帮我。