线程的引入

线程引入

1.应用的需要
2.开销的考虑
 1.创建,撤销,通信,切换。时间/空间开销大,限制了并发度的提高
 2.线程的开销小,创建,切换开销小,同一进程内线程共享内存和文件
3.性能的考虑

如果没有线程

1. 一个服务进程
   1.顺序编程:性能下降
2. 有限状态机
   1.采用非阻塞I/O

构造服务器的三种方法

模型特性
多线程有并发,阻塞系统调用
单线程无并发,阻塞系统调用
有限状态及有并发,非阻塞系统调用,中断

线程的基本概念

1.进程的2个基本属性:资源拥有者,cpu调度单位
2.线程继承了cpu调度单位这一属性
3.线程是进程中的一个运行实体,是cput调度的单位,有时将线程称为轻量级进程

线程的属性

1.有标识符id
2.有状态及状态转换
3.不运行时要保存上下文环境
  1.有上下文环境:程序计数器等寄存器
4.有自己的堆栈指针
5.共享进程地址空间和其他资源

线程机制实现

1.用户级线程

1.在用户空间建立线程库,提供一组管理线程的过程
2.运行时系统:完成线程的管理工作(操作,线程表)
3.内核管理的还是进程,不知道线程的存在
4.线程的切换不需要内核态特权

用户级线程小结

优点:
  1.线程切换快
  2.调度算法是应用程序特定的
  3.用户级线程可运行在任何操作系统上(只需要实现线程库)
缺点:
  1.内核只将cpu分配给进程,同一进程中的2个线程不能同时运行在2个处理器上
  2.大多数系统调用是阻塞的,因此,由于内核阻塞进程,故进程中所有的线程也被阻塞

核心级线程

1.内核管理所有线程管理,并向应用程序提供api接口
2.内核维护进程和线程上下文
3.线程的切换需要内核支持
4.以线程为基础进行调用

混合模型

1.线程创建在用户空间完成
2.线程调度等在核心态完成

线程应用场景

可再入程序(可重入):
  可被多个进程同时调用的程序,具有下列性质
  1.它是纯代码的,即在执行过程中自身不改变,调用它的进程应该提供数据区

转载于:https://www.cnblogs.com/pluslius/p/10076098.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值