物理计算中的“线程”是什么?

物理计算中的“线程”是什么?

我当时正在看这个视频有关 Computerphile 的多线程,在 10:03 处显示了以下内容:

在此处输入图片描述

其中T1和T2是线程,其下方是机器指令。

那么,线程不过是一串机器指令吗?

答案1

好吧,归根结底,处理器执行的所有内容都是来自其指令集的机器指令(至少在微架构抽象级别上;如果您想在逻辑门级别上走得更远,那么它就是位;如果您想在电子级别上走得更远,那么它就是电压,等等)。

是的,正如您在视频中看到的那样,线程只不过是一系列机器指令。

答案2

虽然 Noob_Guy 的答案是正确的,但我想补充以下内容:

在“过去”,CPU 一次只能执行一项任务,并且会在任务之间来回切换。现在有了多核和多 CPU 系统以及适当的编程支持,多个任务(线程)可以同时运行。这意味着可以同时完成更多任务,而不会降低 CPU 的速度,因为它会等待另一个任务/线程完成。

答案3

什么是线程?线程是按顺序执行的指令列表。每个线程同步运行所有代码,线程中的代码不会混杂在一起。这意味着每个活动线程都从第 1 行的代码开始,然后是第 2 行、第 3 行等等。您可以并排运行多个线程。每个线程都应尽可能快地执行其代码,但 CPU 的核心数量有限。每个核心一次只能运行一条指令,因此 CPU 在线程之间切换,以便它们同时(异步)进行。

线程的目的是什么?如果我们想“同时”运行不同的任务,我们可以启动多个线程。例如,在制作具有图形界面的应用程序时。我们希望程序执行需要几分钟才能完成的任务。如果我们在单个线程(UI 线程)上运行所有代码,我们的程序将变得无响应,直到该任务完成。线程解决了这个问题。我们可以在第二个线程上启动需要很长时间的任务,并使用主线程根据第二个线程的进度更新进度条。

结论:线程并不实际存在,它们只是需要执行的指令的待办事项列表。线程实际上是机器代码序列。需要注意的是,每个线程都以固定顺序运行其机器代码。多个线程可以彼此相邻地运行代码片段。

相关内容