线程
线程:在一个程序中 的多个执行路线;线程是一个进程内部的一个控制序列(linux中别名轻量级进程·)
进程是资源竞争的基本单位
线程是程序执行的最小单位
线程独有:栈(因此也拥有自己的局部变量),线程ID,一组寄存器,上下文数据,error(全局变量),信号屏蔽字,调度优先级
多线程与进程共享:全局变量,文件描述符表,信号处理函数,当前目录状态。
线程优点:
1.创建一个线程的代价小于创建一个进程
2.与进程之间的切换相比,线程之间的切换操作系统做的工作要少
3.线程占用的资源要比进程少
4.能充分利用多处理器的并行计算
5. 在等待慢速i/o操作结束的同时,程序可执行其他计算任务
6.计算密集型应用,为了能在多处理器系统上运行,将计算分为多线程
7.i/o密集型应用,为了提高性能,将i/o操作重叠,线程可以同时等待不同的i/o操作
线程优点:
1.多线程的调试比单线程的调试很慢
2.性能降低(线程多了时,线程之间的调度要时间,不一定会快)
3.健壮性低:编写多线程时因为时间分配上的细微差别,共享了不该共享的变量造成的不良影响(共享的变量每个线程都可以修改),话句话说就是线程之间缺乏保护
4.缺乏访问控制:进程是访问控制的基本粒度,在线程中调 用默写系统调用函数会对整个进程造成影响
5.编程难度提高
线程控制
创建线程:pthread_create(编译时要使用编译器命令 -lpthread)
第一个参数:线程id(是一个赋值性参数:线程被创建时,这个指针指向的变量中将会被写入一个标识符,我们用这个标识符来引用新线程)
第二个参数:线程属性参数(继承性,线程堆栈大小,线程的保护区大小)通常给:NULL
第三个参数:线程入口函数
第四个参数:是第三个参数的,函数指针的参数
成功返回0,失败返回错误编号
`#include