我一直试图找到一个好的定义,并理解线程到底是什么。
似乎我一定遗漏了一些明显的东西,但每次我读到什么是线程,它几乎是一个循环的定义,比如“线程是执行的线程”或“一种划分运行任务的方法”。嗯嗯。嗯?
It seems from what I have read that a thread is not really something concrete, like a process is. It is in fact just a concept. From what I understand of the way this works, a processor executes some commands for a program (which has been termed a thread of execution), then when it needs to switch to processing for some other program for a bit, it stores the state of the program it's currently executing for somewhere (Thread Local Storage) and then starts executing the other program's instructions. And back and forth. Such that, a thread is really just a concept for "one of the paths of execution" of a program that is currently running.
不像一个过程,它是一个资源的集合,等等。
作为一个定义的例子,它并没有真正帮助到我…
从维基百科:
“在计算机科学中,线程是执行线程的缩写。线程是程序将自身分割(称为“分裂”)为两个或多个同时(或伪同时)运行的任务的一种方法。不同操作系统的线程和进程各不相同,但一般来说,线程包含在进程中,同一进程中的不同线程共享相同的资源,而同一多任务操作系统中的不同进程则不相同。”
我说的对吗?错了吗?线程到底是什么?
编辑:显然,线程也有自己的调用堆栈,所以这是一个具体的东西。
线程是一组可以被执行的(CPU)指令。
但是为了更好地理解线程是什么,需要一些计算机体系结构知识。
计算机所做的就是按照指令操作数据。
RAM是保存指令和数据的地方,处理器使用这些指令对保存的数据执行操作。
CPU有一些内部存储单元,称为寄存器。它可以对存储在这些寄存器中的数字进行简单的数学运算。它还可以在RAM和这些寄存器之间移动数据。这些是CPU可以被指示执行的典型操作的例子:
将数据从内存位置#220复制到寄存器#3
将寄存器#3中的数字与寄存器#1中的数字相加。
CPU能做的所有操作的集合叫做指令集。指令集中的每个操作都被分配了一个编号。计算机代码本质上是表示CPU操作的数字序列。这些操作以数字的形式存储在RAM中。我们存储输入/输出数据、部分计算和计算机代码,所有这些都混合在RAM中。
CPU工作在一个没有结束的循环中,总是从内存中获取和执行指令。在这个循环的核心是PC寄存器,或程序计数器。它是一个特殊的寄存器,存储下一条要执行的指令的内存地址。
CPU将:
从PC给出的内存地址处获取指令,
PC加1,
执行指令,
回到步骤1。
可以指示CPU向PC写入一个新值,导致执行分支,或“跳转”到内存中的其他地方。这种分支可以是有条件的。例如,一条CPU指令可以说:“如果寄存器#1等于零,则将PC设置为地址#200”。这允许计算机执行如下内容:
if x = 0
compute_this()
else
compute_that()
资源使用自计算机科学蒸馏。
线程是一组可以被执行的(CPU)指令。
但是为了更好地理解线程是什么,需要一些计算机体系结构知识。
计算机所做的就是按照指令操作数据。
RAM是保存指令和数据的地方,处理器使用这些指令对保存的数据执行操作。
CPU有一些内部存储单元,称为寄存器。它可以对存储在这些寄存器中的数字进行简单的数学运算。它还可以在RAM和这些寄存器之间移动数据。这些是CPU可以被指示执行的典型操作的例子:
将数据从内存位置#220复制到寄存器#3
将寄存器#3中的数字与寄存器#1中的数字相加。
CPU能做的所有操作的集合叫做指令集。指令集中的每个操作都被分配了一个编号。计算机代码本质上是表示CPU操作的数字序列。这些操作以数字的形式存储在RAM中。我们存储输入/输出数据、部分计算和计算机代码,所有这些都混合在RAM中。
CPU工作在一个没有结束的循环中,总是从内存中获取和执行指令。在这个循环的核心是PC寄存器,或程序计数器。它是一个特殊的寄存器,存储下一条要执行的指令的内存地址。
CPU将:
从PC给出的内存地址处获取指令,
PC加1,
执行指令,
回到步骤1。
可以指示CPU向PC写入一个新值,导致执行分支,或“跳转”到内存中的其他地方。这种分支可以是有条件的。例如,一条CPU指令可以说:“如果寄存器#1等于零,则将PC设置为地址#200”。这允许计算机执行如下内容:
if x = 0
compute_this()
else
compute_that()
资源使用自计算机科学蒸馏。