一、 线程
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程中,是进程中的实际运作单位。一条线程指的是进程中一个单一的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程是独立调度和分派的基本单位。线程可以操作系统内核调度的内核线程。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述和信号处理等等。但同一进程中的多个线程有个字的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。
二、进程
进程(process),是计算机中已运行程序的实体。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。若干进程有可能与同一个程序相关系,且每个进程接可以同步(循序)或异步(平行)的方式独立运行。现代计算机系统可以在同一段时间以进程的形式将多个程序加载到内存中,并借由时间共享(或称时分复用),已在一个处理器上表现出同时(平行性)运行的感觉。
三、为什么使用线程?
使用线程的理由之一是和进程相比,它是一种花销小、切换快,的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段。而运行一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间。不同的线程运行于不同的CPU上。