什么是“线”(真的)?

我一直在试图找到一个好的定义,并理解什么是线程

看起来我肯定错过了一些明显的东西,但每次我读到线程是什么时,它几乎是一个循环定义,“线程是一个执行线程”或“一种划分运行任务的方法”。嗯。嗯

从我所读到的内容来看,线程并不像进程那样是具体的东西。事实上,这只是一个概念。根据我对其工作方式的理解,处理器为一个程序执行一些命令(被称为执行线程),然后当它需要切换到其他程序的处理一段时间时,它会将当前正在执行的程序的状态存储在某个地方(线程本地存储)然后开始执行另一个程序的指令。来来回回。因此,线程实际上只是当前正在运行的程序的“执行路径之一”的概念

不同于一个过程,它是一个真正的东西——它是一个资源的集合体,等等

作为一个对我帮助不大的定义的例子

来自维基百科:

计算机科学中的线程是执行线程的简称。线程是程序同时(或伪同时)将自身分成两个或多个线程的一种方式运行任务。线程和进程在不同的操作系统中有所不同,但一般来说,一个线程包含在一个进程中,同一进程中的不同线程共享相同的资源,而同一多任务操作系统中的不同进程则不共享资源。”

我说的对吗?错误的线到底是什么

Edit:显然,线程也有自己的调用堆栈,所以这有点像一件具体的事情

线程是执行上下文,它是CPU执行指令流所需的所有信息

假设你正在读一本书,你现在想休息一下,但你想能够从停下来的地方回来继续阅读。实现这一点的一种方法是记下页码、行号和字号。所以你阅读一本书的执行上下文是这3个数字

如果你有一个室友,而她也在使用同样的技巧,她可以在你不用的时候拿走这本书,然后从她停下来的地方继续阅读。然后你可以把它拿回来,从原来的地方继续

线程以同样的方式工作。CPU给你一种错觉,它在同时进行多个计算。它通过在每次计算上花费一点时间来做到这一点。它可以做到这一点,因为它对每个计算都有一个执行上下文。就像你可以和朋友共享一本书一样,许多任务也可以共享一个CPU

在更技术的层面上,执行上下文(因此是线程)由CPU寄存器的值组成

最后:线程不同于进程。线程是执行的上下文,而进程是与计算相关联的一组资源。一个进程可以有一个或多个线程

说明:与进程关联的资源包括内存页(进程中的所有线程都具有相同的内存视图)、文件描述符(例如,打开的套接字)和安全凭据(例如,启动进程的用户的ID)

发表评论