Linux线程

1 线程的概念

  • 什么是线程

    Linux操作系统与Windows操作系统线程实现原理是不同的。
    Linux操作系统中线程是依托进程实现的,在类UNIX早期没有线程的概念,一直到80年代才提出线程的概念。
    
  • LWP

    light weight process轻量级的进程,本质仍是进程(在Linux环境下)
    
  • 进程与线程

    进程: 独立地址空间,拥有PCB
    线程: 也有PCB,但没有独立的地址空间(共享)
    区别:在于是否共享地址空间。独居(进程); 合租(线程)
    
    linux下:
    	线程: 最小的执行单位
    	进程: 最小分配资源单位,可看做只有一个线程的进程
    
  • linux内核线程实现原理

    类Unix系统中,早期是没有"线程"概念的,80年代才引入,借助进程机制实现了线程的概念。因此这类系统中,进程和线程关系密切
    1. 轻量级进程(light-weight process),也有PCB,创建线程使用的底层函数和进程一样,都是clone
    2. 从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表是相同的
    3. 进程可以蜕变成线程
    4. 线程可看做寄存器和栈的集合
    5. 在linux下,线程是最小的执行单位,进程是最小的分配资源单位
    
    查看LWP号:ps -Lf pid 查看执行线程的lwp号
    lwp(线程号):  CPU分配时间轮片的依据
    
  • 线程资源

    共享资源
    	1.文件描述符表
    	2. 每种信号的处理方式
    	3. 当前工作目录
    	4. 用户ID和组ID
    	5. 内存地址空间(.text/.data/.bss/heap/共享库)
    	
    非共享资源
    	1. 线程ID
    	2. 处理器现场和栈指针(内核栈)
    	3. 独立的栈空间(用户栈空间),如函数运行的栈空间
    	4. errno变量
    	5. 信号屏蔽字
    	6. 调度优先级
    
  • 线程的优、缺点

    优点: 
    	1. 提高程序并发性
    	2. 开销小
    	3. 数据通信、共享数据方便
    缺点:
    	1. 库函数,不稳定
    	2. 调试、编写困难、gdb不支持
    	3. 对信号支持不好
    	
    优点相对突出,缺点均不是硬伤,Linux下由于实现方法导致进程、线程差别不是很大
    

2 线程的控制原语 ***

  • 线程创建
    实例
  • 线程间共享全局变量
    线程默认共享数据段,代码段等地址空间,常用的是全局变量。而进程不共享全局变量,只能借助mmap
    

3 线程的属性控制(扩展知识)

	修改线程属性的方法

4 注意的事项

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值