赞
踩
进程:有独立的进程地址空间,有独立的pcb
线程:有独立的pcb,没有独立的进程地址空间
因此进程线程最本质的区别就是:是否共享地址空间
在Linux下线程是最小的执行单位;进程是最小的分配资源单位,可看成只有一个线程的进程
看进程下的线程号:ps -Lf 进程ID
LWP—>CPU执行的最小单位
线程共享资源:
1,文件描述符表
2,每种信号的处理方式
3,当前工作目录
4,用户ID和组ID
5,内存地址空间(./text/.data/.bss/heap/共享库)
线程非共享资源
1,线程id
2,处理器线程和栈指针
3,独立的栈空间(用户空间栈
4,errno变量
5,信号屏蔽字
6,调度优先级
gdb不支持线程,线程对信号支持也不太好
但线程可以提高程序并发性,且开销小,数据通信共享数据都方便
两个概念:
线程ID和线程号(LWP)
线程ID是在进程中用来表示线程身份的;线程号LWP是标识线程身份给cpu用的,用来划分时间轮线,决定每个程序的执行时间
1,pthread_create 创建一个新线程
第一个参数:传出新创建线程的传出ID;
第二个参数:描述线程的属性:通过调整线程属性可以调整线程各种状态,比如说线程分离,线程优先级,线程所占空间大小等,但是要是没有特殊要求就可以只传一个NULL空值;
第三个参数:一个回调参数
第四个参数:泛型指针,就是第三个参数所需要的参数,不需要参数就传入NULL
成功返回0,失败返回错误号
2,pthread_self 获取线程ID
pthread_t pthread_self(void);
注意线程ID是pthread_t类型的,且线程ID是进程内部的识别标识,两个进程间的线程ID是允许相同的
例子
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。