线程(英语:thread)是操作系统能够进行运算调度的最小单位.大部分情况下,它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务.在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程. 线程是独立调度和分派的基本单位.线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows的线程,进行混合调度
线程有4个状态:产生(spawn)中断(block)非中断(unblock)结束(finish)
SUN Solaris操作系统使用的线程叫做UNIX International线程,支持内核线程、轻权进程和用户线程.一个进程可有大量用户线程;大量用户线程复用少量的轻权进程,轻权进程与内核线程一一对应.用户级线程在调用核心服务时(如文件读写),需要“捆绑(bound)”在一个LWP上.永久捆绑(一个LWP固定被一个用户级线程占用,该LWP移到LWP池之外)和临时捆绑(从LWP池中临时分配一个未被占用的LWP).在调用系统服务时,如果所有LWP已被其他用户级线程所占用(捆绑),则该线程阻塞直到有可用的LWP.如果LWP执行系统线程时阻塞(如read()调用),则当前捆绑在LWP上的用户级线程也阻塞.
如果是它的话头文件是Thread.h
POSIX线程(POSIX threads),简称Pthreads,是线程的POSIX标准.该标准定义了创建和操纵线程的一整套API.在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程.Windows操作系统也有其移植版pthreads-win32.
如果是POSIX的话,头文件是pThread.H
而windows就比较简单了,只有一个Win32线程,包含:寄存器,核心栈,线程环境块与用户栈.
线程是CPU的实际调度和分派的基本单位,比如说你写的.NET程序.每一个进程至少得有一个线程.这个是必须.
而硬件呢?假设我只有一个核.那也有:叫做超线程技术的多线程.
比如:我计算偶数的命令是一个,计算奇数的命令是另外一个,利用一些命令模式来拆分指令集或者一些其他的方式来区分运作的内容,达到类似多线程的目的,这叫做超线程,是硬件的多线程技术.
所以:就算是一个核也有多线程,但是并不是完全并行的,因为时间尺度上,它真的做不到了.
1.单CPU中的进程只能并发,多CPU的才能并行.
2.单核中线程只能并发,多核才能并行
进程:
进程这东西非常神奇,如果程序不控制,它可以把CPU跑到断电.
由于有操作系统调度器的关系,进程被弱化到了调度单位.
进程好玩的点在于它是N多资源的集合,例如各种外设.