• 线程实现的两种方式 —— 用户空间和内核中


    在用户空间中实现线程
    特点:
    整个线程包放入用户空间中,内核对线程包一无所知。从内核角度考虑,就是按正常的方式管理,即单线程进程
    优点:
    1、用户级线程包可以在不支持线程的操作系统上实现
    2、线程切换比内核快更多
    3、允许每个进程有自己定制的调度算法

    缺点:
    线程发生I/O或页面故障引起的阻塞时,如果调用阻塞系统调用则内核由于不知道有多线程的存在,而会阻塞整个进程从而阻塞所有线程
    一个单独的进程内部,没有时钟中断,所以不可能用轮转调度的方式调度线程

    在内核中实现线程
    特点:
    当某个线程希望创建一个新线程或撤销一个已有线程时,它进行一个系统调用,这个系统调用通过对线程的更新完成线程创建或撤销工作
    优点:
    1、所有能够阻塞线程的调用都以系统调用的形式实现
    2、如果某个线程引起了页面故障,内核可以很方便地检查该进程是否有任何其他可运行的线程


    混合实现
    结合以上两种实现的优点
    第一种方法:使用内核级线程,然后将用户级线程与某些或全部内核线程多路复用,如下图



    内核只识别内核级线程,并对其进行调度,一些内核级线程会被多个用户级多路复用,可以创建、撤销和调度这些用户级线程,每个内核级线程有一个可以轮流使用用户级线程集合
    ---------------------
    作者:在云端123
    来源:CSDN
    原文:https://blog.csdn.net/jyxmust/article/details/73369121
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Puppeteer--API
    Puppeteer--性能优化
    Puppeteer--代码示例(3)
    Puppeteer--代码示例(2)
    Puppeteer--代码示例(1)
    Puppeteer--等待加载
    Puppeteer--创建实例
    Puppeteer--爬坑记录
    Puppeteer--参考介绍
    vue.js的的回到顶部
  • 原文地址:https://www.cnblogs.com/zhousong918/p/10842954.html
Copyright © 2020-2023  润新知