multithreading - 超线程、多线程、多处理和多任务 - 理论

标签 multithreading multiprocessing multitasking hyperthreading

我对不同术语及其实际差异感到困惑。它们各自是什么以及它们的实际含义是什么?我在学校的 IT 老师前一天给了我们一个定义,第二天又给了我们另一个定义,所以请您为我解释一下。

谢谢。

最佳答案

线程是由机器执行的程序指令序列。

当程序的单次执行有多个线程时,我们将程序称为多线程

可以在单处理器机器上模拟多线程:处理器有时会在各个线程之间切换注意力,具体时间由系统的调度策略和程序本身决定。我说的是“模拟”,但就程序员而言,在单处理器系统上运行的正确同步的多线程程序的行为与在多处理器系统上运行的同一程序的行为几乎没有区别。

多处理器系统具有多个 CPU(CPU 也称为“核心”)。在任何给定时刻,每个 CPU 都可能正在执行同一程序的不同线程。或者,不同的 CPU 可以执行不同的程序。

超线程模糊了单处理器系统和多处理器系统之间的区别。超线程处理器就像连体双胞胎:它们具有独立处理器的一些属性(例如,每个处理器都有自己的完整寄存器集),但它们共享一些功能单元。超线程是一个在应用程序级别不可见的硬件设计问题。将其视为一种可以更有效地利用可用芯片的技巧。

关于multithreading - 超线程、多线程、多处理和多任务 - 理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23252636/

相关文章:

ios - 虽然项目正在保存在核心数据中,但在重新启动之前无法查看它们

iOS - backgroundTimeRemaining 值未显示预期值

c++ - 大数据结构上的缓存行检索和性能

c - 如果我们在 Unix 中的 pthread_cleanup_push 和 pthread_cleanup_pop 之间返回会发生什么?为什么?

Python 线程与 Linux 中的多处理

python - 如何使用 Python 多处理队列访问 GPU(通过 PyOpenCL)?

python - 在 Python 中将 click.progressbar 与多处理一起使用

ios - 如果没有 Xcode,应用程序无法在后台正常运行

objective-c - 进入背景时,iOS拍摄快照的确切时间?

c++ - 外部进程与线程和数据处理