Linux多线程C++版 线程基础 进程和线程关系 线程分类 Linux线程实现 线程表示

news2025/7/20 13:03:01

目录

        • 1.线程的基础
        • 2.进程和线程的关系
        • 3.线程分类 了解
        • 4.Linux线程实现
        • 5.线程标识

1.线程的基础

  • 进程是资源管理的最小单位,线程是程序执行最小单位。
  • 每个进程有自己的数据段,代码段和堆栈段。线程通常叫做轻型的进程,它包含独立的栈和CPU寄存器状态,线程是进程的一条执行路径,每个线程共享其所属进程的所有资源,包括打开的文件,内存页面,信号标识及动态分配的内存等
  • 因为线程和进程比起来很小,所有相对来说,线程花费更少的CPU资源
  • 在操作系统设计上,从进程演化出线程,最主要的目的就是更好地支持多处理器,并且减少进程上下文切换的开销。

2.进程和线程的关系

  • 线程和进程的关系:线程是属于进程的,线程运行在进程空间内,同时进程所产生的线程共享同一用户内存空间,并当进程退出时该进程所产生的线程都会被强制退出并清除。一个进程至少需要一个线程作为它的指令执行体(一般也称为主线程),进程管理着资源(比如CPU,内存,文件等等),并把线程分配到某个CPU上执行。
    在这里插入图片描述

  • 一般一个进程在最开始的时候是有一个线程,这个线程称为主控线程(主线程),同时可以通过主线程去创建多个线程,这种线程称为子线程。

3.线程分类 了解

  • 线程按照其调度者可分为用户级线程和内核级线程两种
    • 用户级线程:主要解决的是上下午切换的问题,其调度过程由用户决定
    • 内核级线程:由内核调度机制实现
  • 现在大多数操作系统都采用用户级线程和内核级线程并存的方法
  • 用户级线程要绑定内核级线程运行,一个进程中的内核级线程会分配到固定的时间片,用户线级程分配的时间片以内核级线程为准。
  • 默认情况下用户级线程和内核线程是一对一,也可以多对一,这样实时性就会比较差。
  • 当CPU分配给线程的时间片用完后但线程没有执行完毕,此时线程会从运行状态返回到就绪状态,将CPU让给其它线程使用。

4.Linux线程实现

  • 以下线程均为用户级线程,在Linux中,一般采用Pthread线程库实现线程的访问与控制,由POSIX提出,具有良好的可移植性。
  • Linux线程程序编译需要在gcc上链接库Pthread -Lpthread

5.线程标识

  • 每个进程内部的不同线程都有自己的唯一表示(ID)
  • 线程标识只在它所属的进程环境中有效。
  • 线程标识是pthread_t数据类型
#include <pthread.h>
//对比两个线程是否相等 相等返回非零,否则返回零  参数是两个线程标识
int pthread_equal(pthread_t,pthread_t)
//获取调用线程的线程ID
pthread_t pthread_self(void)
//调用
pthread_t th1;
pthread_t th2;
th2= th1.pthread_self();//返回线程ID

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

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

相关文章

[附源码]java毕业设计基于的楼盘销售管理系统论文2022

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

SpringCloud Gateway 自定义Filter用代码怎么写?别再说我只会配置基本Filter了,来学学如何定制Filter过滤器

文章目录学习SpringCloud Gateway自定义全局Filter&#xff08;GlobalFilter&#xff09;ServerWebExchange自定义非全局Filter&#xff08;GatewayFilter&#xff09;学习SpringCloud Gateway SpringCloud Gateway使用及原理分析大全——断言及过滤器&#xff08;上篇&#x…

【openwrt】libubox组件——uloop_process

uloop_processuloop_process主要数据结构struct list_head processesstruct uloop_processuloop_process主要函数uloop_handle_processesuloop_process原理uloop_process使用示例uloop_process 是 Libubox 提供的一个进程管理工具,它主要用来等待子进程工作的结束&#xff0c;一…

DAP和IAP

DAP和IAP DAP模型&#xff1a;通过训练样本学习一组属性分类器直接预测测试样本的属性。 IAP模型&#xff1a;通过训练样本的类别&#xff0c;&#xff08;多分类器&#xff09;间接预测测试样本的属性。 两者之间的区别&#xff1a;属性分类器的学习方式&#xff0c;DAP是一组…

labelme做标注

1.anaconda 安装 anaconda下载地址如下&#xff1a; 官网 一直下一步&#xff0c;注意下面这个地方 同时手动配置环境变量&#xff0c;下面三个路径需添加 Anaconda安装路径 Anaconda安装路径\Scripts Anaconda安装路径\Library\bin 最后测试一下 cmd 依次输入 conda…

云原生周刊 | 百家争鸣的边缘计算时代即将到来?| 2022-11-14

今年的 KubeCon 大会有一个很奇怪的现象&#xff0c;到场的几乎都是小公司&#xff0c;没有大公司。可能是因为这些大公司恰好在这个时候都有自己的活动要举办&#xff0c;也有可能是他们正在快马加鞭研发他们的边缘计算方案&#xff1f;因为 Gartner 预测到 2025 年&#xff0…

Mybatis—LanguageDriver

LanguageDriver主要用于构造SqlSource和ParameterHandler&#xff0c;从LanguageDriver在Mybatis中调用链路来看&#xff0c;Configuration#newParameterHandler通过调用LanguageDriver#createParameterHandler完成构建ParameterHandler&#xff0c;通过调用LanguageDriver#cre…

缺流量时代,App们需要如何突围?

距离上一个现象级的应用抖音出现已经过去了6年&#xff0c;如今App市场万马齐喑&#xff0c;巨头创新不断&#xff0c;中小团队异军突起的App黄金时代一去不返。 你的App里多久没有出现过一款新应用了&#xff1f; 距离上一个现象级的应用抖音出现已经过去了6年&#xff0c;那…

基于加权对立和贪婪搜索多模态工程问题的黑猩猩优化算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【网络安全】处理应急响应的简单方法

目录 一、应急响应 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;分类 二、如何处理 &#xff08;1&#xff09;查看日志 &#xff08;2&#xff09;封堵ip &#xff08;3&#xff09;代码加固 &#xff08;4&#xff09;安装防火墙 &#xff08;5&#x…

sqli通关笔记

sqli通关学习笔记 目录sqli通关学习笔记Less-1Less-2Less-3Less-4Less-5Less-5Less-6导入导出文件相关的操作Less-7Less-8Less-9Less-10Less-11Less-12Less-13Less-14Less-15Less-16增删改函数介绍Less-17HTTP 头部介绍Less-18Less-19Less-20Less-21Less-22高级注入&#xff0c…

【网络篇】第十四篇——HTTP协议(一)(附带电视剧李浔同款爱心+端口号被恶意占用如何清除)

目录 HTTP简介 基本性质 URI和URL urlencode和urldecode HTTP协议格式 HTTP请求协议格式 HTTP响应协议格式(爱心代码端口清理) ​ HTTP简介 超文本传输协议是一个用于传输超媒体文档的应用层协议。它是为web浏览器与web服务器之间的通信而设计的&#xff0c;但也可以用…

【DPDK】使用 Open vSwitch * 采用 DPDK 帧间 VM NFV 应用程序

一、概述 数据面开发套件 (DPDK)提供高性能数据包处理库和用户空间驱动程序。从Open vSwitch (OVS)版本 2.4 (http://openvswitch.org/releases/NEWS-2.4.0)开始&#xff0c;我们可以进行 OVS 中&#xff0c;使用 DPDK 优化 vHost 路径。DPDK 支持后的 OVS 中可用的 2.2 版。 …

JavaSE——包装类、装箱与拆箱

目录 一、基本概念 1.1 八种包装类及使用场景 1.2 装箱与拆箱的概念 二、以Integer包装类为例 2.1 Integer的构造方法 2.2 通过常量获取最大值与最小值 2.3 自动装箱和自动拆箱&#xff08;非常重要的面试题&#xff09; 三、Integer常用方法 3.1 手动拆箱&#xff08;过时…

LeetCode-剑指44-数字序列中某一位的数字

1、找规律 我们通过找规律可以发现&#xff0c;当位数为xxx时&#xff0c;其占用的位数为x910x−1x\times9\times10^{x-1}x910x−1。因此我们可以不断循环并增大位数xxx直至n−x<x910x−1n-x<x\times9\times10^{x-1}n−x<x910x−1&#xff0c;此时数字落在剩余的位数…

HTTP协议加强

HTTP协议加强[TOC](HTTP协议加强)一、HTTP协议简介1.1 什么是通信1.2 什么是通信协议1.3 HTTP二、HTTP请求2.1 什么是HTTP请求消息2.2 HTTP请求消息的组成部分三、HTTP响应3.1 什么是HTTP响应消息3.2 HTTP响应消息的组成部分四、HTTP请求方法4.1 什么是HTTP请求方法4.2 HTTP的请…

接口性能调优的方法,这有11种,你知道几种?

​当我们谈到“软件测试”时&#xff0c;是指软件测试的相关工作&#xff0c;如单元测试、集成测试、系统测试等&#xff0c;但不局限于动态测试&#xff0c;也可以包括静态测试——需求评审、设计评审、代码评审和借助工具进行代码静态分析。 接口性能调优共11种方法&#xf…

Nftea: 世界杯文化、 NFT与 期权的首度碰撞

体育文化&#xff0c;正在成为加密行业发展的新驱动力 卡塔尔世界杯即将在2022年11月20日开幕&#xff0c;随着开赛日期的临近&#xff0c;作为四年一度的足球狂欢盛会&#xff0c;也吊足了全球足球球迷们的胃口。当然&#xff0c;从上个世纪开始&#xff0c;体育文化就成为了商…

Slurm作业管理系统常用命令和教程

Slurm &#xff08; Simple Linux Utility for Resource Management &#xff09;是开源的、具有容错性和高度可扩展大型和小型 Linux集群资源管理和作业调度系统。超级计算系统可利用 Slurm 进行资源和作业管理&#xff0c;以避免相互干扰&#xff0c;提高运行效率。所有需运行…

charles

charles中文名叫青花瓷&#xff0c;是一款基于HTTP协议的代理服务器。通过电脑或浏览器的代理来截取请求和请求结果&#xff0c;达到抓包并进行数据分析的目的。charles可以截取HTTP和HTTPS的网络封包&#xff0c;支持重发网络请求、修改网络请求参数、流量控制等场景 安装 由…