我一直在尝试找到一个好的定义,并了解 线程 的真正含义。
似乎我肯定遗漏了一些明显的东西,但是每次我读到线程是什么时,它几乎都是一个循环定义,例如“线程是执行线程”或“划分为运行任务的方法”。呃呃。嗯?
从我所读到的内容看来,线程并不是真正的具体 事物 ,就像进程一样。它实际上只是一个概念。根据我对这种工作方式的理解,处理器为程序执行一些命令(被称为 执行线程 ),然后当它需要切换到其他程序的处理时,它存储 状态 它当前在某处(线程本地存储)执行的程序,然后开始执行其他程序的指令。来回。这样,线程实际上只是当前正在运行的程序的“执行路径之一”的概念。
与流程不同,流程确实是某种东西——它是资源的集合体,等等。
作为一个对我没有太大帮助的定义的例子。. .
来自维基百科:
“计算机科学中的线程是执行线程的缩写。线程是程序将自身划分(称为“拆分”)为两个或多个同时(或伪同时)运行的任务的一种方式。线程和进程不同于一个但是,一般来说,一个线程包含在一个进程中,同一个进程中的不同线程共享相同的资源,而同一个多任务操作系统中的不同进程则不共享。”
那我说得对吗?错误的?什么是真正的线程?
编辑:显然,线程也有自己 的 调用堆栈,所以这有点具体。
线程是处理器寄存器的一组独立值(对于单个内核)。由于这包括指令指针(又名程序计数器),它控制以什么顺序执行的内容。它还包括堆栈指针,它最好指向每个线程的唯一内存区域,否则它们会相互干扰。
线程是受控制流(函数调用、循环、goto)影响的软件单元,因为这些指令在指令指针上操作,并且属于特定线程。线程通常根据某种优先级方案进行调度(尽管可以设计一个每个处理器内核有一个线程的系统,在这种情况下,每个线程都始终在运行,并且不需要调度)。
事实上,指令指针的值和存储在该位置的指令足以确定指令指针的新值。对于大多数指令,这只是将 IP 增加指令的大小,但控制流指令会以其他可预测的方式更改 IP。IP 采用的值序列形成了一条贯穿程序代码的执行路径,从而产生了“线程”这个名称。