zoukankan      html  css  js  c++  java
  • 线程的引入

    线程引入

    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.它是纯代码的,即在执行过程中自身不改变,调用它的进程应该提供数据区
    
  • 相关阅读:
    商城02——dubbo框架整合_商品列表查询实现_分页
    商城项目01——工程介绍及搭建
    利用ssm框架做一个客户管理系统
    SpringMVC学习笔记
    spring问题
    Spring学习笔记
    MyBatis学习笔记二
    MyBatis学习笔记
    二分查找与几种排序方法
    配置 spring boot 的 banner (自定义或取消banner)
  • 原文地址:https://www.cnblogs.com/pluslius/p/10076098.html
Copyright © 2011-2022 走看看