我一直在努力寻找一个好的定义,并理解什么是thread真的是。
看来我一定错过了一些明显的东西,但每次我读到线程是什么时,它几乎都是一个循环定义,就像“线程是执行线程”或“划分运行任务的一种方式”。呃呃。啊?
从我读到的内容看来,线程并不是真正的某物具体,就像一个过程一样。其实这只是一个概念。根据我对其工作方式的理解,处理器为程序执行一些命令(称为执行线程),然后当它需要切换到处理其他程序时,它会存储state它当前正在某处(线程本地存储)执行的程序的指令,然后开始执行其他程序的指令。来回。这样,线程实际上只是当前正在运行的程序的“执行路径之一”的概念。
与流程不同,流程确实是某种东西——它是资源等的集合。
作为一个定义的例子并没有真正帮助我。 。 。
From 维基百科:
“计算机科学中的线程是执行线程的缩写。线程是程序将自身划分(称为“分裂”)为两个或多个同时(或伪同时)运行的任务的一种方式。线程和进程不同于一个但是,一般来说,线程包含在一个进程内,同一进程中的不同线程共享相同的资源,而同一多任务操作系统中的不同进程则不共享相同的资源。”
那么我说得对吗?错误的?线程到底是什么?
Edit:显然,线程也有自己的调用堆栈,因此这在某种程度上是具体的thing.
线程是一个执行上下文,它是 CPU 执行指令流所需的所有信息。
假设您正在阅读一本书,并且您想立即休息一下,但您希望能够返回并从您停止的确切位置继续阅读。实现此目的的一种方法是记下页码、行号和字数。所以你阅读一本书的执行上下文就是这 3 个数字。
如果你有一个室友,并且她正在使用相同的技术,那么她可以在你不使用这本书时拿走这本书,并从她停止的地方继续阅读。然后您可以将其收回并从原来的位置恢复。
线程以同样的方式工作。 CPU 会给您一种它正在同时进行多项计算的错觉。它通过在每次计算上花费一些时间来实现这一点。它可以做到这一点,因为它为每个计算都有一个执行上下文。就像您可以与朋友共享一本书一样,许多任务可以共享一个 CPU。
在更技术的层面上,执行上下文(因此是线程)由 CPU 寄存器的值组成。
最后:线程与进程不同。线程是执行上下文,而进程是与计算相关的一堆资源。一个进程可以有一个或多个线程。
澄清:与进程相关的资源包括内存页(进程中的所有线程都具有相同的内存视图)、文件描述符(例如,打开的套接字)和安全凭证(例如,启动该进程的用户的 ID)。过程)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)