线程与进程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
简单来讲,线程是运算最小单元。
以下是个人理解
线程与进程之间的关系
首先想说进程和线程或者很多其他设计,都来自人对自然的模仿
进程与进程可以并行(分情况)
线程与线程可以并行(分情况)
进程包含线程-进程由多个线程组成
计算机与人类比
一个人一边吃东西(eat),一边听歌(listen),可以看作两个线程,并行运行(资源不同,是嘴巴与耳朵)
喝水(drink) 另一个线程
吃东西与听歌是两个线程同时运行,看作并行
吃东西与喝水这两个线程,却不能并行,他们需要相同资源(嘴巴),在计算机中也存在这种问题,多个任务存在需要相同资源的情况,这时候不存在并行情况,而是轮流使用唯一资源,暂且叫轮询吧。
这种情况下,是轮询使用资源,不是真正意义上的并行。
线程分类
线程分为CPU线程与用户线程
CPU线程
比如4核心CPU,那么CPU能够同时执行四个线程,并且能够并行运行(同时进行运算)
用户线程
间接使用CPU内核运算的线程,用户线程很多时候没有真正意义的并行
一个计算机其中一个内核,可能是1秒内,运算了2个不同的用户任务,这里可以看作是两个用户线程,实际是一个CPU内核线程实现
一般用户线程指的是图中的子线程,两个用户线程占用同一个内核资源的时候,不能真正意义的并行运算