Linux线程

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

在 Linux 中,线程是进程的一部分,它是在同一个进程内运行的并发执行的单位。每个线程共享同一进程的地址空间、文件描述符和其他资源。

Linux 提供了多种线程编程的接口,其中最常用的是 POSIX 线程(Pthreads)。Pthreads 是一个标准化的线程库,定义了一组函数和数据类型,用于创建、管理和同步线程。

要在 Linux 中使用线程,可以按照以下步骤进行:

1. 包含 pthread.h 头文件:在程序中包含 pthread.h 头文件,这个头文件声明了与线程相关的函数和数据类型。

2. 创建线程:使用 pthread_create 函数创建新线程。该函数需要指定一个函数作为线程的入口点,并可以传递参数给该函数。

3. 同步线程:可以使用互斥锁(mutex)、条件变量(condition variable)等机制来同步线程的执行,避免竞争条件和冲突。

4. 等待线程完成:可以使用 pthread_join 函数等待线程的结束,并获取线程的返回值(如果有返回值)。

5. 销毁线程:使用 pthread_exit 函数或线程函数的返回语句来退出线程,并释放线程所占用的资源。

使用线程可以在程序中实现并行执行的能力,有助于提高程序的效率和响应性。然而,线程编程也涉及到并发访问共享数据的问题,需要特别注意线程间的同步和资源管理,以避免出现竞争条件和其他并发相关的问题。

 

一.进程和线程的关系

线程和进程的关系是:

线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一用户内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。一个进程至少需要一个线程作为它的指令执行体,进程管理着资源(比如cpu、内存、文件等等)。而将线程分配到某个cpu上执行。

 二.线程分类

分为用户级线程和内核级线程

三.线程终止

3.1主动终止

线程的执行函数中调用return语句

调用pthread_exit()
 

3.2被动终止

线程可以被同一进程的其他线程取消,其它线程调用

pthread_cancel(pthid)。

 

 

 一级指针也行

四.线程清理和控制

 

 栈,先进后出

 五.进程状态装转换

 六.线程的属性

 初始化结构体和销毁结构体

 

 第一个获取,第二个设置

//int pthread_detach(pthread_t tid) 线程分离,线程自行退出

七.线程的同步和互斥

·线程同步

有先后顺序

是一个宏观概念,在微观上包含线程的相互排斥和线程先后执行的
约束问题。
解决同步方式

1.条件变  量

2.线程信号量


线程互斥

不能同时访问

线程执行的相互排斥
解决互斥方式
1.互斥锁

2.读写锁
3.线程信号量

互斥锁(mutex)是一种简单的加锁的方法来控制对共享资源的访问。在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行访问。若其他线程希望上锁一个已经被上了互斥锁的资源,则该线程挂起,直到上锁的线程释放互斥锁为止。

互斥锁数据类型
pthread_mutex_t

 

 锁的属性

 

 

 

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

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

相关文章

蓝桥杯 题库 简单 每日十题 day4

01 津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津…

ChatGPT实践-构建简单的AI聊天机器人(python)

本文指导如何通过调用OpenAI的API完成一个简单的聊天机器人。 背景知识 API介绍 我们可以通过任何语言的 HTTP 请求、官方 Python 、 Node.js 库或社区维护的库与 ChatGPT的API 进行交互,官方API文档: API Reference - OpenAI API (可自行…

【笔试强训选择题】Day43.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&#xff…

PTA 甲级 1044 Shopping in Mars

题目链接 思路&#xff1a;前缀和滑动窗口 #include<bits/stdc.h> #define MAXN 100010 using namespace std; int a[MAXN];int main(){int n,m;cin>>n>>m;//n数量 m金额for(int i1;i<n;i){int t;cin>>t;a[i]a[i-1]t;//前缀和}vector<pair<in…

【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小-基础样例】

【QT5-解决不同分辨率屏幕-进行匹配大小-适应屏幕大小】 1、前言2、实验环境3-1、问题说明-屏幕视频3-2、解决方式-个人总结解决思路&#xff1a;我们在软件启动的时候&#xff0c;先获取屏幕大小&#xff0c;然后根据长宽&#xff0c;按照一定比例&#xff0c;重新设置大小。并…

[ABC118D] Match Matching

题目传送门 引 题目的描述很形象&#xff0c;梦回童年&#xff0c;注意一下火柴全部都用完 解法 显然 DP , 设计状态&#xff1a; f i : 用完 i 根木棒凑出的最大数 f_i:用完i根木棒凑出的最大数 fi​:用完i根木棒凑出的最大数 状态转移&#xff1a; f i → f i c n t …

VMware17 不可恢复错误mks解决方案

用的虚拟机VMware17版本&#xff0c;然后运行带HDR的unity程序&#xff0c;结果报错 网上找了很多解决方案&#xff0c;都没用。毕竟需要在不放弃虚拟机3D加速的情况下运行。 最终皇天不负有心人&#xff0c;亲测有效的方法&#xff1a; 在虚拟机名字.vmx文件里添加以下2行&a…

vue子组件向父组件传参的方式

在Vue中&#xff0c;子组件向父组件传递参数可以通过自定义事件和props属性来实现。下面是一些关键代码示例&#xff1a; 1. 使用自定义事件&#xff1a; 在子组件中&#xff0c;通过 $emit 方法触发一个自定义事件&#xff0c;并传递参数。 <template><button cli…

URL 管理器

基本介绍 对外接口 对外提供两个接口&#xff1a;一个可以提取URL&#xff0c;一个可以增加URL&#xff0c;分别对应图上的1和2。 当要爬取某个网页时&#xff0c;则可以从1接口提取出该网页的URL进行爬取。 有时候爬取的网页内容中会包含别的网页链接&#xff0c;即包含有U…

Android 12 桌面去掉搜索框和 隐藏设置搜索框 隐藏应用页的搜索框

去掉桌面搜索框 --- a/packages/apps/Launcher3/src/com/android/launcher3/config/FeatureFlags.java +++ b/packages/apps/Launcher3/src/com/android/launcher3/config/FeatureFlags.java @@ -58,7 +58,7 @@ public final class FeatureFlags {* Enable moving the QSB on …

Qt 面试突击

1.在Qt中&#xff0c;多线程环境下&#xff0c;信号槽分别在什么样的线程中执行&#xff0c;如何控制&#xff1f; &#xff08;1&#xff09;信号槽的执行线程 如果信号和槽都在同一个线程&#xff0c;就它们就在这个线程中执行如果信号和槽不在同一个线程&#xff1a; Qt::…

网工内推 | 国企、上市公司,IA/IP认证即可,有年终、绩效

01 上海市机械设备成套&#xff08;集团&#xff09;有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1、 负责公司电脑、网络设备、电器设备、办公设备等硬件的管理、维护和使用&#xff0c;做好计算机硬件及办公设备台帐&#xff1b; 2、 负责公司办公软件的…

回溯算法 解题思路

文章目录 算法介绍回溯算法能解决的问题解题模板1. 组合问题2. N皇后问题 算法介绍 回溯法&#xff08;Back Tracking Method&#xff09;&#xff08;探索与回溯法&#xff09;是一种选优搜索法&#xff0c;又称为试探法&#xff0c;按选优条件向前搜索&#xff0c;以达到目标…

zookeeper —— 分布式服务协调框架

zookeeper —— 分布式服务协调框架 一、Zookeeper概述1、Zookeeper的基本概念2、Zookeeper的特点3、Zookeeper的数据结构 二、Zookeeper的安装部署1、Zookeeper的下载2、Zookeeper的安装本地模式&#xff08;单机模式standalone&#xff09;安装部署分布式&#xff08;集群模式…

1978-2021年全国各省城镇与农村恩格尔系数数据

1978-2021年全国各省城镇与农村恩格尔系数数据 1、时间&#xff1a;1978-2021年 2、指标&#xff1a;城镇恩格尔系数、农村恩格尔系数 3、范围&#xff1a;31省市 4、来源&#xff1a;各省年鉴 5、用途&#xff1a;反应居民生活质量 6、指标解释&#xff1a; 恩格尔系数…

【SpringSecurity】三更草堂项目案例分析3 - 鉴权操作

目录 鉴权RBAC 模型前置准备redis 实现角色权限获取 鉴权 RBAC 模型 参考 CSDN 文章 RBAC&#xff08;Role-Based Access Control&#xff09;&#xff0c;基于角色的访问控制&#xff0c;现在主流的权限管理系统的权限设计都是 RBAC 模型 所谓的 RBAC 模型&#xff0c;可以理…

Java精品项目源码第61期垃圾分类科普平台(代号V061)

Java精品项目源码第61期垃圾分类科普平台(代号V061) 大家好&#xff0c;小辰今天给大家介绍一个垃圾分类科普平台&#xff0c;演示视频公众号&#xff08;小辰哥的Java&#xff09;对号查询观看即可 文章目录 Java精品项目源码第61期垃圾分类科普平台(代号V061)难度指数&…

【TCP】滑动窗口、流量控制 以及拥塞控制

滑动窗口、流量控制 以及拥塞控制 1. 滑动窗口&#xff08;效率机制&#xff09;2. 流量控制&#xff08;安全机制&#xff09;3. 拥塞控制&#xff08;安全机制&#xff09; 1. 滑动窗口&#xff08;效率机制&#xff09; TCP 使用 确认应答 策略&#xff0c;对每一个发送的数…

MySQL的常用术语

目录 1.关系 2.元组 3.属性 MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 1.关系 前面的博客有说到,MySQL是一款关系型数据库管理软件,一个关系就是 一张二维表(表) 我想大家都知道表格怎么…

【100天精通Python】Day61:Python 数据分析_Pandas可视化功能:绘制饼图,箱线图,散点图,散点图矩阵,热力图,面积图等(示例+代码)

目录 1 Pandas 可视化功能 2 Pandas绘图实例 2.1 绘制线图 2.2 绘制柱状图 2.3 绘制随机散点图 2.4 绘制饼图 2.5 绘制箱线图A 2.6 绘制箱线图B 2.7 绘制散点图矩阵 2.8 绘制面积图 2.9 绘制热力图 2.10 绘制核密度估计图 1 Pandas 可视化功能 pandas是一个强大的数…