本文demo运行在阿里云的服务器,Centos系统
首先复习进程和线程的资源关系。
进程内典型全局资源如下:
1)代码区:这意味着当前进程空间内所有的可见的函数代码,对于每个线程来说,也是可见的
2)静态存储区:全局变量,静态空间
3)动态存储区:堆空间
线程内典型的局部资源:
1)本地栈空间:存放本线程的函数调用栈,函数内部的局部变量等
2)部分寄存器变量:线程下一步要执行代码的指针偏移量
linux下的线程以进程PCB模拟,可以认为是轻量级进程。
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*star t_routine)(void*), void *arg)
thread:返回线程ID
attr:设置线程的属性,attr为NULL表⽰使⽤用默认属性
start_routine:是个函数地址,线程启动后要执⾏行的函数
arg:传给线程启动函数的参数//返回值:
成功返回0,失败返回错误码
int pthread_join(pthread_t thread, void **value_ptr)
thread:线程ID
value_ptr:这个指针指向pthread_exit