线程的引入

线程引入

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.它是纯代码的,即在执行过程中自身不改变,调用它的进程应该提供数据区
posted @ 2018-12-06 12:50  pluscat  阅读(420)  评论(0编辑  收藏  举报