多线程可以在单处理器系统上实现吗?

标签 c windows multithreading winapi

我一直遵循多线程只能在多处理器系统上实现的概念,其中有多个处理器分配给每个线程并且每个线程都可以同时执行。在这种情况下没有调度,因为每个线程都有单独的资源,所有资源都专用于它。 但是我最近在某个地方读到它,我也可以在单处理器系统上进行多线程处理。 这是对的吗?如果是,那么单处理器系统和多处理器系统之间有什么区别?

最佳答案

I recenetly read it somewhere that I can do multithreading on single processor system as well. Is it correct? and if yes then what is the difference between single processor and multiple processor systems?

是的,您可以在单处理器系统上执行多线程。

在多处理器系统中,多个线程在不同的内核上同时执行。 例如-如果有两个线程和两个核心,那么每个线程将在单独的核心上运行。

在单处理器系统中,多个线程执行,一个接一个地执行或等待直到一个线程完成或被操作系统抢占,这取决于线程优先级和操作系统策略。但是正在运行的线程,给人一种错觉它们同时运行,相对于用户空间应用程序所需的应用程序响应时间。

时间比较(示例):

如果两个线程各花费 10us 来执行,那么在 2 处理器系统上,净花费的时间是 10us

如果两个线程各花费 10us 来执行,那么在 1 个处理器的系统上,净花费的时间是 20us

关于多线程可以在单处理器系统上实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116952/

相关文章:

python - 如何在 Windows 上运行 protobuf python 插件

python - 如何在使用 python 脚本失败后触发 Windows 任务计划重启

python - 类型错误 : message() takes exactly 1 positional argument (29 given)

java - 线程启动后服务器/客户端程序停止工作

c - 分别存储数组每个子集的总和,而不是所有子集的总和

c - 尝试为常量分配新值

c - 通过时间延迟增加整数

c - 对字符串使用通用指针

c# - 哪些字符对于 ZIP 文件中的文件夹名称无效?

c++ - 如何在c++/c中通过socks代理创建基本的TCP连接?