线程及实现方式

一、线程 

        线程是一个基本的CPU执行单元,也是程序执行流的最小单位。引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

  1. 线程是处理机调度的单位: 是的,线程是调度的基本单位。在多CPU计算机中,不同线程可以被调度到不同的CPU核上并行执行,这提高了并发性能。

  2. 线程可占用不同的CPU: 正确。在多CPU系统中,不同线程可以并行在不同的CPU核上执行。

  3. 每个线程都有一个线程控制块(TCB): 是的,线程控制块是操作系统用来管理和维护线程状态的数据结构。

  4. 线程有就绪、阻塞、运行三种基本状态: 是的,这是描述线程在操作系统中可能处于的基本状态。

  5. 线程几乎不拥有系统资源: 这取决于线程的类型。用户级线程(User-Level Threads)通常几乎不拥有系统资源,而内核级线程(Kernel-Level Threads)由操作系统内核管理系统资源。

  6. 同一进程的不同线程间共享进程的资源: 是的,同一进程内的线程通常共享进程的资源,因为它们拥有相同的地址空间。

  7. 同一进程中的线程间通信无需系统干预: 这取决于线程间通信的方式。在共享内存模型中,线程间通信确实无需系统干预。然而,在其他通信方式(如消息传递)中可能需要系统协助。

  8. 同一进程中的线程切换不会引起进程切换: 是的,线程切换通常开销较小,因为同一进程内的线程共享相同的地址空间和其他资源。

  9. 不同进程中的线程切换会引起进程切换: 是的,不同进程的线程切换涉及到不同的地址空间和资源,通常会引起较大的开销,因为这实际上是进程切换。

二 、线程实现方式

1. 用户级线程

用户级线程(User-Level Threads)是一种线程模型,其中线程的创建、调度和管理完全由用户空间的应用程序或用户级线程库负责,而不涉及操作系统内核。这与内核级线程(Kernel-Level Threads)相对,后者的创建和管理需要操作系统的支持。

以下是用户级线程的一些特点:

  1. 轻量级: 用户级线程是轻量级的,因为它们的创建和切换不需要系统调用,而是由用户级线程库直接控制。

  2. 快速切换: 由于用户级线程的切换是在用户空间完成的,因此切换的开销通常比内核级线程低。这对于某些需要高度并发和快速响应的应用程序很有优势。

  3. 无需系统调用: 用户级线程的创建、调度和销毁不需要系统调用,这意味着应用程序可以更自由地控制线程的行为,而不受操作系统的限制。

  4. 无法利用多核: 由于用户级线程的调度由用户空间的线程库负责,它们通常无法充分利用多核处理器。如果一个用户级线程阻塞,整个进程的执行也可能受到影响(它们的调用也是cpu对进程的调度,即进程是最小的调度单位)

  5. 不受操作系统调度策略影响: 用户级线程的调度完全由应用程序控制,不受操作系统的调度策略的影响。这可能导致一些问题,例如用户级线程的阻塞可能导致整个进程的阻塞。

  6. 需要处理同步问题: 由于用户级线程是由用户空间的线程库管理的,它们之间的同步问题通常需要由应用程序自己来处理,而不是依赖于操作系统提供的同步机制。

用户级线程通常在特定应用程序的上下文中使用,对于需要高度优化、灵活性较大的应用程序可能会选择使用用户级线程。然而,它们也有一些限制,例如不能充分利用多核处理器以及在面对 I/O 操作时可能导致整个进程的阻塞等

2. 内核级线程

内核级线程(Kernel-Level Threads)是由操作系统内核直接支持和管理的线程。与用户级线程相对,内核级线程不是由用户空间的线程库进行管理,而是直接由操作系统内核负责。这意味着内核级线程在操作系统的层次结构中更加底层,与操作系统内核的调度和管理机制密切相关。

以下是内核级线程的一些特点:

  1. 由内核管理: 内核级线程的创建、调度、撤销等操作完全由操作系统内核负责,不需要用户空间的线程库的干预。

  2. 更重量级: 与用户级线程相比,内核级线程通常更重量级,因为它们涉及到更多的内核资源和更复杂的上下文切换。

  3. 更高的并发性: 内核级线程能够更好地利用多核处理器,因为内核可以独立地将不同的线程调度到不同的处理器核上运行。

  4. 适用于多核系统: 由于内核级线程能够更好地利用多核系统,它们通常在需要更高并发性的情况下更为合适。

  5. 对同步和互斥的支持: 内核级线程能够充分利用操作系统提供的同步和互斥机制,因为这些机制通常是在内核中实现的。

  6. 阻塞不影响整个进程: 内核级线程的阻塞不会导致整个进程的阻塞。如果一个内核级线程阻塞,其他内核级线程仍然可以继续执行。

  7. 上下文切换开销相对较高: 由于内核级线程的上下文切换涉及到更多的内核资源,因此它们的上下文切换开销相对较高。

总体而言,内核级线程适用于需要更高度并发性、更好地利用多核处理器的场景。然而,由于其较重的开销,对于一些轻量级任务,用户级线程可能更为合适。不同的应用场景和性能需求可能决定了选择哪种线程模型。

3. 多线程模型 

 

线程的组织和控制 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hive】——安装部署

1 MetaData&#xff08;元数据&#xff09; 2 MetaStore &#xff08;元数据服务&#xff09; 3 MetaStore配置方式 3.1 内嵌模式 3.2 本地模式 3.3 远程模式 4 安装前准备 <!-- 整合hive --><property><name>hadoop.proxyuser.root.hosts</name><v…

Java+Swing: 主界面组件布局 整理9

说明&#xff1a;这篇博客是在上一篇的基础上的&#xff0c;因为上一篇已经将界面的框架搭好了&#xff0c;这篇主要是将里面的组件完善。 分为三个部分&#xff0c;北边的组件、中间的组件、南边的组件 // 放置北边的组件layoutNorth(contentPane);// 放置中间的 Jtablelayou…

Tair(3):Tair入门demo

新建一个maven项目 1 导入依赖 <dependency><groupId>com.taobao.tair</groupId><artifactId>tair-client</artifactId><version>2.3.5</version></dependency><dependency><groupId>com.alibaba</groupId>…

Linux权限(用户角色+文件权限属性)

Linux权限 文章目录 Linux权限一.文件权限1.快速掌握修改权限的方法&#xff08;修改文件权限属性&#xff09;2.对比权限的有无&#xff0c;以及具体的体现3.修改权限的第二套方法&#xff08;修改用户角色&#xff09;4.文件类型&#xff08;Linux下一切皆文件&#xff09; 二…

049:VUE 引入jquery的方法和配置

第049个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

springboot基础(80):redis geospatial的应用

文章目录 前言redis geospatial如何从地图上获取经纬度springboot 的相关方法调用准备redis服务器引用的依赖预设位置的keyGEOADD 添加位置GEORADIUS 获取指定经纬度附件的停车场&#xff08;deprecated&#xff09;GEORADIUS 获取指定成员附件的停车场&#xff08;deprecated&…

文心一言API(高级版)使用

文心一言API高级版使用 一、百度文心一言API(高级版)二、使用步骤1、接口2、请求参数3、请求参数示例4、接口 返回示例 三、 如何获取appKey和uid1、申请appKey:2、获取appKey和uid 四、重要说明 一、百度文心一言API(高级版) 基于百度文心一言语言大模型的智能文本对话AI机器…

归并排序--分治法

代码 #include<iostream> using namespace std;void merge(int arr[], int p, int q, int r, int temp[]) {int i p;int j q 1;int k 0;while (i < q && j < r){if (arr[i] < arr[j]){temp[k] arr[i];}else{temp[k] arr[j];}}while (i < q){t…

智能优化算法应用:基于蚁狮算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蚁狮算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蚁狮算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蚁狮算法4.实验参数设定5.算法结果6.参考文献7.MA…

ptmalloc:从内存虚拟化说起

前言 本文并不局限于ptmalloc的原理&#xff0c;而是从linux的内存虚拟化和系统调用原理出发&#xff0c;结合各种语言实现&#xff0c;讲明内存分配方面的trade off&#xff0c;力图事无巨细&#xff0c;追根究底。本文内容包括但不限于&#xff1a;NIO原理、0拷贝原理、内存…

leetcode:643. 子数组最大平均数 I(滑动窗口)

一、题目 链接&#xff1a;643. 子数组最大平均数 I - 力扣&#xff08;LeetCode&#xff09; 函数原型&#xff1a; double findMaxAverage(int* nums, int numsSize, int k) 二、思路 滑动窗口&#xff1a; 先计算数组前k个元素总和&#xff0c;作为第一个窗口&#xff0c;默…

vlog如何降低重复率

大家好&#xff0c;今天来聊聊vlog如何降低重复率&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; vlog如何降低重复率 Vlog作为一种流行的视频日志形式&#xff0c;常常被人们用于记录日常生活、分享经…

pta模拟题——7-34 刮刮彩票

“刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示&#xff1a; 每次游戏玩家会拿到一张彩票&#xff0c;上面会有 9 个数字&#xff0c;分别为数字 1 到数字 9&#xff0c;数字各不重复&#xff0c;并以 33 的“九宫格”形式排布在彩票上。 在游戏开始时能看见一个位置上…

Lambda表达式规则,用法

Lambda表达式是JDK8新增的一种语法格式 1.作用 简化匿名内部类的代码写法 Lambad用法前提&#xff1a;只能简化函数式接口&#xff08;一般加有Funcationallnterface&#xff09;&#xff08;有且仅有一个抽象方法&#xff09;的匿名内部类 匿名内部类&#xff1a;(本质是对…

2023年终总结-轻舟已过万重山

自我介绍 高考大省的读书人 白&#xff0c;陇西布衣&#xff0c;流落楚、汉。-与韩荆州书 我来自孔孟故里山东济宁&#xff0c;也许是小学时的某一天&#xff0c;我第一次接触到了电脑&#xff0c;从此对它产生了强烈的兴趣&#xff0c;高中我有一个愿望&#xff1a;成为一名计…

设计模式再探——装饰模式

目录 一、背景介绍二、思路&方案三、过程1.装饰模式简介2.装饰模式的类图3.装饰模式代码4.装饰模式&#xff0c;职责父类拆分的奥义5.装饰模式&#xff0c;部件抽象类的无中生有 四、总结五、升华 一、背景介绍 最近公司在做架构模型的时候&#xff0c;涉及到装饰模式的研…

html网页设计 01marquee标签广告滚动(1)

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><!-- scrollamount:数字越大&#xff0c;滚动越快direction:滚动方向滚动的类型behaior"slide",文字滚动到边界后就会…

vuepress-----20、全文搜索

默认主题自带的搜索, 只会为页面的标题、h2、h3 以及 tags构建搜索索引。所以尽量将围绕知识点的关键字体现到标题上。而 tags 更为灵活&#xff0c;可以把相关的能想到的关键字都配置到 tags 中&#xff0c;以方便搜索。 默认插件介绍 (opens new window) 默认主体配置 (ope…

电子秤ADC芯片CS1237技术资料问题合集

问题11&#xff1a;实际应用中&#xff0c;多个称重传感器应该怎么与ADC连接&#xff1f; 解答&#xff1a;如果传感器是测量同一物体&#xff08;例如&#xff1a;厨房垃圾处理器&#xff09;&#xff0c;一般建议使用并联的方式。则相同类型的信号线连接在一起。对于传感器的…

C语言指针基础题(一)

目录 例题一题目解析答案 例题二题目解析答案 例题三题目解析答案 例题四题目解析答案 例题五题目解析答案 例题六题目解析答案 例题七题目解析答案 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x…