热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

在用户空间中实现线程特点: 整个线程包放入用户空间中,内核对线程包一无所知。从内核角度考虑,就是按正常的方式管理,即单线程进程 优点&#xff

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

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

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

 


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

 



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

转:https://www.cnblogs.com/zhousong918/p/10842954.html




推荐阅读
author-avatar
手机用户2502858065
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有