目录
一、什么是线程
线程是操作系统能够进行运算调度的最小单位(程序运行的最小单位),包含在进程之中(可多个),是进程中的实际运作单位。线程是独立调度和分派的基本单位。同一进程中的多条线程将共享该进程中的全部系统资源,但是线程拥有自己独立的属性,如:ID、切换状态、调度优先级、函数栈、错误号、信号屏蔽字、未决信号集、tack_struct结构体等。
二、为什么多任务要引用线程
因为进程可以实现多任务,但进程的实现比较困难,通过虚拟内存机制对进程的创建和控制切换都很复杂,消耗资源,浪费时间;另一方面,空间独立造成通信的困难。而线程是进程的一个执行单元,是进程内的调度实体,比进程更小的独立运行的基本单位。在一些情况下,创建线程能更好的节约CPU资源,同时,因为内存空间共享,通信更方便。
三、线程的优缺点
优点: 1、开销低 是任务调度和执行的基本单位,线程切换实质是函数的切换
2、线程通信机制简单 全局变量(共享资源)
缺点: 线程不安全,不稳定,不健壮
进程退出,进程中所有线程全部退出;一个进程崩溃后,不会对其他进程产生影响(空间独立),但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。(内存共享,一个崩溃造成资源释放等,肯定会有影响)
四、线程的操作
线程的操作函数,是由库函数提供——线程库libpthread.a/.so(本质还是内核实现