问题标签 [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.
multithreading - 为什么我的活动监视器显示 Node.js 使用多个线程?
我在 OSX 中打开了我的活动监视器,以查看 Node 的运行情况,令我惊讶的是它使用了 8 个线程。怎么可能!!
javascript - 为什么 setTimeout 不取消我的循环?
我想知道一个 JavaScript 语句(在 Chrome 的控制台中)可以在一毫秒内增加一个变量多少次while
,所以我迅速将这段代码直接写到控制台中:
问题是它永远运行。
为什么会发生这种情况,我该如何解决?
c# - TcpListener 服务器循环空闲,直到有挂起的连接
为了这个问题,我做了一个超级简化的例子:
评论已经包含了这个问题,但是是的,我如何让循环闲置直到有一个实际的挂起连接,这样我的 CPU 才不会融化?
当给定套接字上有挂起的连接时,有没有办法只在操作系统事件上监听和唤醒?(像libuv (node.js)这样的东西,这就是我添加单线程的原因)
我的实际实现是针对一个相当基本的 Reactor 事件循环,但是是的,我不知道如何用 C# 监听 OS 事件(如果有任何可能性)。
我知道BeginAccept
还有其他一堆 Async 家族,但由于他们的多线程性质,这些人是不可接受的。
另外,我知道我可以简单地Thread.Sleep
在循环中,但我正在寻找基于事件的行为。
PS 我正在使用 Mono,目标是 Linux 可执行文件。
multithreading - 服务器中的并发可以仅使用单个线程来实现吗?
我知道多线程非常适合这种情况,但是是否有任何实例可以说明这种情况?
c# - Windows 服务 OnStop 等待完成处理
我实际上在 VS 2012 / .NET 4.5 中开发了一个 Windows 服务。
该服务遵循以下代码片段的方案:
- 使用计时器
- 每隔几分钟执行一些所需的操作。
- 该过程大约需要 10 分钟才能完成
- 我在服务中使用单个线程
我担心的是,如果有人通过管理控制台停止服务,可能只是在服务正在执行的过程中。
我已经阅读了一些关于通过请求停止来停止 Windows 服务的内容,但有点迷失了。有时会创建 WorkerThreads,有时会创建 ManualResetEvents,但到目前为止,我还不能完全掌握我的 Windows 服务的最佳前进方向。
在停止 Windows 服务之前,我需要等到 onStop 方法中的处理正确完成。
那么,最好的方法是什么,同时考虑下面的代码片段?
谢谢大家!
java - Java单数据库线程如何实现
我制作了一个使用 SQLite4Java 连接到 SQLite 数据库的 Java 程序。
我从串行端口读取并将值写入数据库。这在开始时效果很好,但现在我的程序已经增长并且我有几个线程。我试图用一个 SQLiteQueue 变量来处理这个问题,该变量执行数据库操作,如下所示:
但现在我的 SQLite 类无法执行报表报告:
所以执行不会发生。
我试图找出问题所在,我认为我需要一个 Java 包装器,它可以从其他线程通过的单个线程进行所有数据库操作调用。
这是我的问题,我不知道如何以一种好的方式实现它。如何进行方法调用并确保它始终从同一个线程运行?
javascript - 如果在 ajax 调用期间显示警报窗口会发生什么?
我只是想知道如果在执行 ajax 调用时会在浏览器窗口中向用户提示警报会发生什么。
例如,假设我有一个 ajax 调用
这需要很长时间才能完成(10 秒)。执行调用时,会抛出一个简单的 javascript 警报
例如,如果:
- ajax 调用开始
- ajax调用获取数据
- 显示警报
- ajax 调用返回数据(警报窗口仍然打开!)
知道 JS 是单线程的,我知道脚本执行将停止,我只是想知道如果警报窗口没有“及时”关闭,ajax 调用/响应会发生什么。
我希望我足够清楚,这不是一个“虚拟”问题。谢谢
java - vert.x 有多单线程?
据我了解,每个 vert.x 实例都会被分配一个事件循环。事件循环处理该特定实例的所有请求和其他任务。我认为事件循环是一个线程。当部署了多个 vert.x 实例时,每个实例都有自己的事件循环,对吗?这意味着存在多个线程(多线程)。我是这样理解的。这个单线程概念让我非常头疼。任何帮助将不胜感激。
java - StringBuffer 和 StringBuilder 的区别
为什么 StringBuffer 是线程安全的,为什么 StringBuilder 不是。为什么 StringBuffer 在多线程中效果最好,而 StringBuilder 在单线程中效果最好。
我看到StringBuilder和StringBuffer都有一些通用的方法,那么为什么它们的功能会有所不同。
multithreading - 了解 CPU 频率、线程选择等
使用 1270v3 和单线程应用程序时,我的性能已经接近尾声,但是当我观看像 atop 这样的监控工具时,我不明白这一切是如何工作的。我试图找到一篇关于这类主题的好文章,但它们要么是用我不懂的语言解释的,要么不是关于我想知道的东西。我希望在这里问这种东西是可以的。
据我了解,单线程应用程序只使用一个线程来完成所有/大部分工作。所以性能是由 CPU 的单线程能力决定的。在我写这个问题之前,我玩了一下 CPU 频率,并注意到虽然只有两个应用程序实例在运行,但使用情况是在所有内核之间共享的。所以我假设线程在这些核心之间跳转。所以我将 CPU 缩放设置为性能cpufreq-set -g performance
。结果是所有 CPU 内核/线程都像以前一样保持在大约 2GHz,除了一个永久在 3.5GHz (100%) 上。由于我只更改了一个核心的缩放比例,为什么仍然在所有核心之间共享使用量?我的意思是应用程序以大约 300% 的速度运行,为什么它不坚持 100% 的 CPU 内核?
此外,当我注意到只有一个 CPU 得到了扩展时,我查看了帮助页面,发现-r
应该使用性能设置扩展所有内核。不幸的是,什么都没有改变。(这是 Ubuntu 1404 中的错误吗?)所以我使用-c
了数字8
(8 个线程)-> 不起作用。4
-> 有效,但只能从 8 个核心中扩展 2 个。7
-> 扩展 4 个核心。所以我想知道,这不支持超线程还是整个程序有问题?
但是,据我了解,具有最大频率的 CPU 和线程在监视工具中跳来跳去,因为它们显示了平均使用率,这看起来像是共享的。我想对了吗?
将一个 cpu 强制到 3.5GHz 并将应用程序强制到这个内核可以提高性能,或者我想知道的只是关于它们每秒显示的数据之间的平均计算。cpufreq-set -c 7 -g performance
如果是这样,如果功耗无关紧要,我应该运行得最好吗?
感谢您到目前为止的阅读,我希望您有时间帮助我理解整个事情。
顶部示例屏幕截图:
http://i.imgur.com/VFEBvLx.png