Linux - 线程
线程概念
LWP:light weight process 轻量级的进程,本质仍是进程(在Linux环境下) * 进程:独立地址空间,拥有PCB * 线程:也有PCB,但没有独立的地址空间(共享) * 区别:在于是否共享地址空间。 独居(进程);合租(线程)。
Linux下: * 线程:最小的执行单位 * 进程:最小分配资源单位,可看成是只有一个线程的进程
线程控制原语
pthread_self函数:获取线程ID。
pthread_t pthread_self(void); 返回值:成功:0; 失败:无!
pthread_create函数:创建一个新线程。
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
pthread_exit函数:将单个线程退出
void pthread_exit(void *retval); 参数:retval表示线程退出状态,通常传NULL
pthread_join函数:阻塞等待线程退出,获取线程退出状态 。
int pthread_join(pthread_t thread, void **retval); 成功:0;失败:错误号
pthread_detach函数:实现线程分离
int pthread_detach(pthread_t thread); 成功:0;失败:错误号
pthread_cancel函数:杀死(取消)线程
int pthread_cancel(pthread_t thread); 成功:0;失败:错误号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
线程属性
可以通过设置pthread_attr_t来修改线程的默认属性,主要结构成员有
- 线程分离状态;
- 线程栈大小(默认平均分配);
- 线程栈警戒缓冲区大小(位于栈末尾)。
对应的控制函数:
初始化线程属性:
int pthread_attr_init(pthread_attr_t *attr); 成功:0;失败:错误号
1
销毁线程属性所占用的资源:
int pthread_attr_destroy(pthread_attr_t *attr); 成功:0;失败:错误号
1
设置线程属性,分离or非分离:
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
1
获取程属性,分离or非分离:
int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);
1
线程的栈地址:
int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize); 成功:0;失败:错误号
int pthread_attr_getstack(pthread_attr_t *attr, void **stackaddr, size_t *stacksize); 成功:0;失败:错误号
1
2
2
线程的栈大小:
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize); 成功:0;失败:错误号
int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize); 成功:0;失败:错误号
1
2
2
← Linux - 信号 Linux - 进程 →