问题标签 [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 - 多线程进程上多核还是单核速度翻倍?
假设我有一个由两个理想独立任务组成的进程(理想情况下,以消除通信开销)。在 3GHz 速度的单核处理器或 1.5GHz 速度的双核处理器上执行它会更快吗?
当然,在双核处理器的情况下,这项工作是并行化的理想选择。而对于单核,这两个任务将分时完成。
更新: 换句话说,问题
速度翻倍的单核处理器总是比双核处理器更好的选择?
python - 对文件使用系统调用选择
我正在尝试使用系统调用编写单线程非阻塞程序select
。但是,它不能很好地使用文件处理程序。
这是代码:
当有来自标准输入的新输入时,它会到达打印消息,但不会在向文件写入新行时。sockets
使用而不是文件时它工作得很好。
node.js - 具有多个并发请求的 Node.js 服务器,它是如何工作的?
我知道 node.js 是一个单线程、异步、非阻塞 i/o。我已经阅读了很多关于这方面的内容。例如,PHP 每个请求使用一个线程,但节点只使用一个线程,就像那样。
假设有 3 个请求 a、b、c 同时到达 node.js 服务器。其中三个请求需要大型阻塞操作,例如它们都想读取同一个大文件。
那么请求如何排队,阻塞操作将按什么顺序执行,响应按什么顺序分派?当然使用多少线程?
请告诉我三个请求从请求到响应的顺序。
node.js - node.js 服务器如何排队并发请求
假设我们有 3 个请求(A,B,C)同时访问我们的 node.js 服务器。
什么是 node.js 标准来确定应该首先执行哪个请求?
所有请求的另一件事是阻塞操作。
ssl - 使用 poll() 将 libwebsockets 与普通套接字相结合 - SSL 连接开销?
我有一个单线程 AIX 服务器,它使用 poll() 函数轮询多个套接字和一个消息队列(AIX 具有轮询处理这两者的简洁特性,并且它适用于大约 1000 个套接字)。我想知道将 websockets 支持添加到现有服务器是否是一个坏主意 - 以及添加单独的服务器来处理 websockets 客户端是否会更好。
我对 websockets 的兴趣主要是研究在浏览器中用 javascript 重新实现 C 客户端的可行性。目前,客户端使用winsock,并使用SRP(安全远程密码)来处理身份验证,并提供一个加密密钥供libdes使用来加密后续消息。
在 C 客户端中过渡到 websockets 并放弃 3des 加密逻辑以支持 SSL 可能会很好。但我很好奇 SSL 身份验证是否会产生足够的开销,从而在单线程服务器中成为问题。目前,我的服务器通过后端消息队列将 SRP 身份验证握手消息传递给一个单独的进程,因此身份验证数字处理中的任何缓慢都不会影响我的服务器进程。SSL握手在单线程服务器中不是问题吗?
multithreading - 单线程进程是否只包含一个线程?
有人可以对单线程和多线程进程进行更多解释单线程进程
是否只包含一个线程?或者这意味着该进程可以包含多个线程并且一次只能运行一个线程,然后在它们之间进行上下文切换?
如果我在单核处理器上运行 java 程序,第二个会是真的吗?
有人可以进一步解释吗?
javascript - 什么是 Javascript 中的单线程执行和运行时?
我正在从这个博客中了解事件循环,但似乎作者进入了我不太熟悉的一般计算机程序概念 -
这包括 HTTP 请求、数据库操作和磁盘读写;单线程执行要求运行时执行操作,提供回调函数,然后继续执行其他操作。
Javascript 的单线程执行部分是否用于与 Javascript 的另一部分(即运行时)通信?还是浏览器的执行部分?我可能完全错了,但到目前为止我的理解是,当您访问网页时,浏览器会获取一些 javascript,并且只有一个线程来执行该 javascript,因此它使用该线程向运行时发送消息,哪个是实际运行该脚本的 cpu 的一部分,这会导致脚本在您的网页上运行?
multithreading - 没有并发怎么能有并行性?
我读到可以在没有并发的情况下实现并行性。这个对吗?
假设您有两个任务 A 和 B,每个任务都需要两个步骤才能完成:A1、A2、B1、B2。此外,进程由线程组成。
在这里,我如何看待并发和并行性:
顺序的
同时
并行(和并发)
如果这是正确的,那么没有并发性就不可能有并行性。
此外,如果这个模型是正确的,你可以有以下:
顺序(和并发)
这可能不是一个好主意,但在概念上似乎是可能的。
c++ - #pragma omp atomic with OMP_NUM_THREADS=1 的性能问题
我观察到我正在编写的 openmp 代码的意外(对我来说!)行为。代码结构如下:
我编译了这段代码的三个不同版本:
1) 使用 openmp (-fopenmp)
2)没有openmp
3)使用openmp,但没有3个原子操作(只是作为测试,因为原子操作是必要的)
当我使用环境变量 OMP_NUM_THREADS=1 运行版本 1) 时,我观察到版本 2) 的速度明显下降;而版本 3) 的运行速度与版本 2) 一样快。
我想知道这种行为的原因(为什么原子操作会减慢代码速度,即使是单线程的?!)以及是否可以编译/重写代码以使版本 1)运行得一样快第 2 版)。
我在问题的末尾附上了一个显示上述行为的工作示例。我编译了1):
2)与:
3)与:
编译器版本为 gcc 版本 5.3.1 20160519 (Debian 5.3.1-20)。3个版本的执行时间为:
1) 1 分 24 秒
2) 51 秒
3) 51 秒
提前感谢您的任何建议!
c# - 比较时间 - 单线程与多线程的结果不同
我编写此代码的目的是测试多线程和单线程速度。感谢所有的反馈!我根据收到的好评重写了大部分内容。这现在可以正常运行(可能这里或那里有错误),首先测试多线程,并取平均值以找到更准确的速度:(滚动到底部以继续。)
主要方法类
单线程类
多线程类
工人阶级
这段代码的输出有点太长,无法发布(我强烈建议您复制并粘贴到自己的 IDE 中,这真的很吸引人)。我想公认的答案是每次测试都不会给出相同的结果,这是由于 CPU 调度、其他或小问题(如 ASLR 等)造成的。除了运行该程序的 Visual Studio 之外,还发生了不止一件事,并且优先级不同。还要感谢您指出首先运行多线程会有所帮助,因为已经完成了内存分配!
需要指出的另一件事是,我在运行时发现了这一点:
尖峰是多线程过程发生的时候。