【发布时间】:2011-07-09 06:44:13
【问题描述】:
我一直在努力寻找一个好的定义,并了解线程到底是什么。
似乎我一定遗漏了一些明显的东西,但每次我读到线程是什么时,它几乎是一个循环定义,一个“线程是一个执行线程”或“一种划分运行任务的方法” ”。呃呃。嗯?
从我所读到的内容看来,线程并不是真正的某种东西,就像进程一样。它实际上只是一个概念。根据我对这种工作方式的理解,处理器为一个程序执行一些命令(这被称为 执行线程),然后当它需要切换到其他程序的处理时位,它将当前正在执行的程序的状态存储在某处(线程本地存储),然后开始执行其他程序的指令。来回。这样一来,线程实际上只是当前正在运行的程序的“执行路径之一”的概念。
与流程不同,流程确实是某种东西——它是资源等的集合体。
作为一个对我没有多大帮助的定义的例子。 . .
来自Wikipedia:
“计算机科学中的线程是执行线程的缩写。线程是程序将自身划分(称为“拆分”)为两个或多个同时(或伪同时)运行的任务的一种方式。线程和进程一个操作系统与另一个操作系统不同,但一般来说,一个线程包含在一个进程中,同一进程中的不同线程共享相同的资源,而同一多任务操作系统中的不同进程则不共享。”
我说的对吗?错误的?什么是真正的线程?
编辑:显然线程也有自己的调用堆栈,所以这有点具体事情。
【问题讨论】:
-
“过程”是一个抽象的术语。
-
线程本地存储只是线程的调用栈吗?
-
下面的答案是……抽象的。用更简单的术语(并掩盖一些细节):曾几何时,计算机程序一次只能做一件事。所以它做了A,然后是B,然后是C,然后......在现代系统中,这并不理想。例如,您想在下载文件的同时继续浏览网页。所以程序现在有一个或多个“线程”。每个“线程”一次只能做一件事,但不同的线程可以同时做事。线程 1 可以做 A,然后是 B,然后是 C;线程 2 可以执行 X,然后是 Y,然后是 Z。在 A 完成之前,B 无法启动,但 A 和 X 可以同时发生。
-
@eric 线程和进程之间的基本区别(也是最重要的区别)是两个或多个线程可以共享内存中的相同空间,即使用相同的资源,而两个进程必须存在于不同的内存空间。这有意义吗?
标签: multithreading process definition