问题标签 [single-threaded]
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.
node.js - Nodejs callback mechanism - which thread handles the callback?
I'm new to nodeJS and was wondering about the single-instance model of Node. In a simple nodeJs application, when some blocking operation is asynchronously handled with callbacks, does the main thread running the nodeJs handle the callback as well?. If the request is to get some data off the database, and there are 100s of concurrent users, and each db operation takes couple of seconds, when the callback is finally fired (for each of the connections), is the main thread accepting these requests used for executing the callback as well? If so, how does nodeJs scale and how does it respond so fast?.
javascript - 可扩展 nodejs 应用程序中的 RabbitMQ,如何构建可扩展性良好的应用程序?
你对使用 RabbitMQ 作为消息代理有什么看法,如果我想在我的 nodejs 项目中使用 socket.io 做可扩展的应用程序,与我将使用的 redis 相比?
在其他场景中可以使用 Rabbit 或者有其他更强大的工具。
你有什么建议我在 Nodejs 中构建一个可扩展的应用程序。
我需要你的反馈。谢谢。
java - 提升java单线程性能——在软件端
当前可用的 CPU 负担不起我需要的单线程性能。所以,我想知道是否有办法通过提高单线程性能。软件?我有一个 Java 应用程序,目前需要 160% 的 cpu 功率。你知道什么可以提高java应用程序的cpu使用率吗?如果你能给我几个关键词,我会很高兴,这可能会提高几个百分比。
python - 在 Python 中执行多线程程序以作为单线程运行
我一直在我的 Python 代码中使用线程类,并成功地制作了几个例程作为多线程运行。问题是当某些事情失败时,在调试时会变得很痛苦。这就是我的代码块的样子:
问题是,如何强制程序作为单线程运行以简化调试。
java - Glassfish 上的单线程 MDB
我有许多在 Glassfish 3.1.2.2 上运行的 MDB。由于其中一个 MDB 的工作性质,我需要将其设为单线程。我查看了Tuning Guide,虽然将最大池大小设置为 1 确实解决了问题,但这也意味着所有其他 MDB 都是单线程的。我真正想做的是让特定的 MDB 是单线程的,同时允许其他的 MDB 是多线程的。
multithreading - 单核处理器上的单线程与多线程编程
有人可以解释一下编写在具有单核的单个处理器上运行的多线程代码是否真的有任何优势?例如,一种处理文档页面的方法,使得这些页面与上述代码段互斥。
乍一看,这似乎没有优势,因为真正的多线程是不可能的。即,操作系统无论如何都必须上下文切换线程。我想知道是否仅以单线程方式编写代码实际上会更有效。
显然,在很多情况下编写多线程代码是有意义的,但我的问题是,当应用程序在单核处理器上运行时,这样做是否真的有好处。
编辑:请注意,我没有说“应用程序”而是“一段代码” - 看看我上面的例子。显然,拥有多线程应用程序有很多好处。
wcf - 带有单线程的 Wcf 单例
有人可以解释尽管我将 InstanceContextMode 和 ConcurrencyMode 都设置为单一,并且在 ServiceThrottlingBehavior 中将最大并发调用实例和会话设置为 1,但我仍然发现至少有 2 个线程正在处理 wcf 请求吗?
客户端输出:
服务器代码:
客户代码:
服务代码:
javascript - 我们是否可以将 requestAnimFrame 视为应用程序循环中的“yield”以允许事件循环处理?
我正在使用 JavaScript 中的requestAnimFrame
方法在程序的主循环中更新画布:
发生的事情是我的程序仅在我的主循环运行 100次迭代后才更新画布然后停止。在我将上面的方法添加到我的主循环之后,我突然在我的程序的每个循环上都得到了画布更新。
在我的程序完成之前画布没有得到更新的事实让我认为画布更新是在另一个没有获得优先权的线程中运行的。(但我们知道JavaScript 是单线程的)。
我的问题是 -我们可以将 requestAnimFrame 视为应用程序循环上的“yield”以允许事件循环处理吗?我还能假设 JavaScript 是单线程的吗?
java - 单线程异步处理
即使在阅读http://krondo.com/?p=1209或异步调用是否总是创建/调用新线程之后?我仍然对如何在固有的单线程系统上提供异步调用感到困惑。我将解释我到目前为止的理解并指出我的疑问。
我读到的一个例子是描述一个提供异步处理请求的 TCP 服务器——用户会调用一个方法,例如get(Callback c)
,稍后会调用回调。现在,我在这里的第一个问题 - 我们已经有两个系统,一个服务器和一个客户端。这不是我的意思,因为事实上我们至少有两个线程——一个在服务器端,一个在客户端。
我读到的另一个例子是 JavaScript,因为这是带有Node.js
. 我无法理解的是,也许用 Java 术语思考,是这样的:如果我执行下面的代码(为不正确的,可能是残暴的语法道歉):
读取文件的调用执行(某事)并返回,允许我的函数的其余部分执行。由于只有一个线程,即执行我的函数的线程,那么究竟同一个线程(也是唯一一个正在执行我的东西的线程)将如何从磁盘读取字节?
基本上,在我看来,我缺少一些像某种循环调度程序一样的底层机制,它本质上是单线程的,可能会将任务拆分为更小的任务,或者调用会产生线程的多线程组件和读入文件。
提前感谢所有评论并在途中指出我的错误。
更新:感谢所有回复。帮助我解决此问题的其他良好资源如下:
- http://www.html5rocks.com/en/tutorials/async/deferred/
- http://lostechies.com/johnteague/2012/11/30/node-js-must-know-concepts-asynchrounous/
- http://www.interact-sw.co.uk/iangblog/2004/09/23/threadless (.NET)
- http://ejohn.org/blog/how-javascript-timers-work/(定时器的内在)
- http://www.mobl-lang.org/283/reducing-the-pain-synchronous-asynchronous-programming/
javascript - 了解 JavaScript 的单线程特性
我一直在阅读 John Resig 的“JavaScript Ninja 的秘密”,它解释了 JavaScript 是单线程的。但是,我尝试对此进行测试,但不确定要从这里拿走什么:
也许我不完全理解单线程意味着什么,但我认为 setTimeout 回调在所有外部匿名函数完成之前不会执行。但是,在浏览器中运行它表明回调函数在 i 仍在输出到控制台时被调用。对我来说,这似乎有 2 个线程调用匿名函数占用 1 个线程,然后使用第 2 个线程进行回调。
有人可以帮我解惑吗?