线程相关概念
通过pthread_create可以创建一个新的进程
是通过增加pcb的方式
创建线程之后,地址空间没有变化,进程退化成了线程,为主线程
创建出的子线程和主线程公用地址空间。
在main函数里的进程为主进程。
主线程和子线程有各自独立的pcb,子线程的pcb是从主线程拷贝来的
共享内容:
.text 代码段
.bss未初始化的变量
.data初始化的变量
堆
动态库加载区
环境变量
命令行参数
通信的时候可以使用:全局变量,堆
不共享
栈,一共有几个线程,栈区就被平均分为5份。
linux和windows中的线程不是一回事
在linux下,线程就是进程,线程和进程的使用是一样的。
轻量级线程内核分不出线程还是进程
线程号LWP
线程号和线程ID有区别,线程号给内核看,
查看方式:
找到程序的进程ID ps aux
使用ps -Lf 进程ID,在linux中,线程ID和进程ID一样,多个线程有同一个线程ID,但有唯一的进程ID。
多进程和多线程
一个单独的进程可以看做一个线程,
始终共享的资源:
多进程:代码,文件描述符,内存映射区(通过mmap创建)
多线程:堆,全局变量
可以看到,线程节省资源。