线程相关概念

14 篇文章 0 订阅
11 篇文章 0 订阅
本文探讨了线程相关概念,包括Linux和Windows下的线程实现差异。通过pthread_create创建的线程并不增加进程,而是共享地址空间。每个线程拥有独立的PCB,主要共享资源包括代码段、数据段、堆等。线程间通信可利用全局变量和堆,而栈则是独立的。在Linux中,线程与进程在内核层面无明显区分,线程号(LWP)与进程ID可能相同。多线程相较于多进程更节省资源。
摘要由CSDN通过智能技术生成

线程相关概念

通过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创建)
多线程:堆,全局变量
可以看到,线程节省资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值