LinuxC编程——线程
目录
- 一、概念
- 二、进程与线程的区别⭐⭐⭐
- 三、线程资源
- 四、函数接口
- 4.1 线程创建
- 4.2 线程退出
- 4.3 线程回收
- 4.3.1 阻塞回收
- 4.3.2 非阻塞回收
- 4.4 pthread_create之传参
- 4.5 练习
一、概念
是一个轻量级的进程,为了提高系统的性能引入线程。
进程与线程都参与cpu的统一调度。
在同一进程中创建的所有线程共享该进程的地址空间
二、进程与线程的区别⭐⭐⭐
- 相同点
都为操作系统提供了 并发 执行能力 - 不同点
- 调度和资源
线程是系统调度的最小单位,进程是资源分配的最小单位;同一个进程创建的多个线程共享进程的资源; - 地址空间方面
进程的地址空间相互独立;在同一进程中创建的所有线程共享该进程的地址空间 - 通信方面
线程通信相对简单,只需要通过全局变量可以实现,但是需要考虑临界资源访问的问题;进程通信比较复杂,需要借助进程间的通信机制(借助3g-4g内核空间) - 安全性方面
线程安全性差一些,当进程结束时会导致所有线程退出;进程相对安全
- 调度和资源
三、线程资源
- 共享的资源
可执行的指令、静态数据、进程中打开的文件描述符、信号处理函数、当前工作目录、用户ID、用户组ID - 私有的资源
线程ID (TID)、PC(程序计数器)和相关寄存器、堆栈、错误号 (errno)、信号掩码和优先级、执行状态和属性
四、函数接口
4.1 线程创建
pthread_create:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
- 功能:创建线程
- 参数
- thread: 线程标识
- attr: 线程属性, NULL:代表设置默认属性
- start_routine:函数名:代表线程函数
- arg: 用来给前面函数传参
- 返回值
- 成功:0
- 失败:错误码
4.2 线程退出
pthread_exit:
int pthread_exit(void *value_ptr)
- 功能:用于退出线程的执行
- 参数:value_ptr:线程退出时返回的值(任意类型),若没有返回值,默认选择NULL就可
- 返回值
- 成功 : 0
- 失败:errno
4.3 线程回收
4.3.1 阻塞回收
pthread_join:
int pthread_join(pthread_t thread, void **value_ptr)
- 功能:用于等待一个指定的线程结束,阻塞函数
- 参数:
- thread:创建的线程对象
- value_ptr:指针*value_ptr指向线程返回的参数
- 返回值:
- 成功 :0
- 失败:errno
4.3.2 非阻塞回收
pthread_detach:
int pthread_detach(pthread_t thread);
- 功能:让线程结束时自动回收线程资源,让线程和主线程分离
- 参数:thread(线程ID)
例子:

pthread_detach:👉百度百科链接
4.4 pthread_create之传参

4.5 练习
通过线程实现数据的交互,主线程循环从终端输入,线程函数将数据循环输出,当输入quit结束程序。

相关文章:
LinuxC编程——线程
目录 一、概念二、进程与线程的区别⭐⭐⭐三、线程资源四、函数接口4.1 线程创建4.2 线程退出4.3 线程回收4.3.1 阻塞回收4.3.2 非阻塞回收 4.4 pthread_create之传参4.5 练习 一、概念 是一个轻量级的进程,为了提高系统的性能引入线程。 进程与线程都参与cpu的统一…...
使用fetch调用fastapi接口(post)的实例
前端代码 //定义函数 async function sendRequest(data) {let myurl"http://127.0.0.1:8848/get_student_info"const response await fetch(myurl, {method: POST,mode: cors, // 执行跨域请求headers: {Content-Type: application/json, },body: JSON.st…...
探索规律:Python地图数据可视化艺术
文章目录 一 基础地图使用二 国内疫情可视化图表2.1 实现步骤2.2 完整代码2.3 运行结果 一 基础地图使用 使用 Pyecharts 构建地图可视化也是很简单的。Pyecharts 支持多种地图类型,包括普通地图、热力图、散点地图等。以下是一个构建简单地图的示例,以…...
Django-------自定义命令
每次在启动Django服务之前,我们都会在终端运行python manage.py xxx的管理命令。其实我们还可以自定义管理命令,这对于执行独立的脚本或任务非常有用,比如清除缓存、导出用户邮件清单或发送邮件等等。 自定义的管理命令不仅可以通过manage.p…...
【Linux】在浏览器输入网址后发生了什么事情?
在浏览器输入网址后发生了什么事情? 1.域名解析2.建立TCP连接3.发出HTTP请求4.响应请求5.TCP断开连接6.解析资源和布局渲染 其实我们在浏览器输入网址后,发生了如下的事情 1.域名解析 由于计算机是无法识别我们输入的地址的,那么就需要将当前…...
推荐两本书《JavaRoadmap》、《JustCC》
《JavaRoadmap》 前言 本书的受众 如果你是一名有开发经验的程序员,对 Java 语言语法也有所了解,但是却一直觉得自己没有入门,那么希望这本书能帮你打通 Java 语言的任督二脉。 本书的定位 它不是一本大而全的书,而是一本打通、…...
使用基于jvm-sandbox的对三层嵌套类型的改造
使用基于jvm-sandbox的对三层嵌套类型的改造 问题背景 先简单介绍下基于jvm-sandbox的imock工具,是Java方法级别的mock,操作就是监听指定方法,返回指定的mock内容。 jvm-sandbox 利用字节码操作和自定义类加载器的技术,将原始方法…...
[HDLBits] Mt2015 q4b
Circuit B can be described by the following simulation waveform: Implement this circuit. module top_module ( input x, input y, output z );//001 100 010 111assign z(xy); endmodule...
C++:堆排序
堆排序 输入一个长度为n的整数数列,从小到大输出前m小的数 输入格式 第一行包含整数n和m 第二行包含n个整数,表示整数数列 输出格式 共一行,包含m个整数,表示整数数列中前m小的数 数据范围 1 ≤ m ≤ n ≤ 1 0 5 1\le m\le …...
Grafana Prometheus 通过JMX监控kafka
第三方kafka exporter方案 目前网上关于使用Prometheus 监控kafka的大部分资料都是使用一个第三方的 kafka exporter,他的原理大概就是启动一个kafka客户端,获取kafka服务器的信息,然后提供一些metric接口供Prometheus使用,随意它…...
vue项目切换页面白屏不显示解决方案
问题描述 1、页面切换后白屏,同时切换回上一个页面同样白屏 2、刷新后正常显示 3、有警告:Component inside <Transition> renders non-element root node that cannot be animated 解决方法 <Transition>中的组件呈现不能动画化的非元素…...
Goland报错 : Try to open it externally to fix format problem
这句报错的意思也就是 : 尝试在外部打开以解决格式问题 解决方案 : 将图片格式该为.png格式,再粘贴进去就可以了! 改变之后的效果 : 那么,这样就ok了...
Python-OpenCV中的图像处理-几何变换
Python-OpenCV中的图像处理-几何变换 几何变换图像缩放图像平移图像旋转仿射变换透视变换 几何变换 对图像进行各种几个变换,例如移动,旋转,仿射变换等。 图像缩放 cv2.resize() cv2.INTER_AREAv2.INTER_CUBICv2.INTER_LINEAR res cv2.r…...
前端JavaScript入门-day08-正则表达式
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 介绍 语法 元字符 边界符 量词 字符类: 修饰符 介绍 正则表达式(Regular …...
ML类CFAR检测器在不同环境中检测性能的分析
摘要:该文是楼主翻阅书籍以及一些论文总结出来的关于ML(均值)类CFAR检测器在不同环境中的性能对比,以及优缺点的总结,可以帮助大家面对不同情形如何选择CFAR问题。由于楼主见识短浅,文中难免出现不足之处,望各位指出。…...
element-ui 路由动态加载功能
第一步 自定义默认的静态路由像登陆和首页这些一般开放的页面,主要代码如下: const router new Router({routes: [{path: "/login/index",component: () > import("../components/page/login/index.vue"),meta: {title: "登录",k…...
(学习笔记-进程管理)进程调度
进程都希望自己能够占用CPU进行工作,那么这涉及到前面说过的进程上下文切换。 一旦操作系统把进程切换到运行状态,也就意味着该进程占用着CPU在执行,但是操作系统把进程切换到其他状态的时候,就不能在CPU中执行了,于是…...
十分钟python入门 正则表达式
正则常见的三种功能,它们分别是:校验数据的有效性、查找符合要求的文本以及对文本进行切割和替换等操作。 1.元字符 所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符 元字符大致分成这几类:表示单个特殊字符的,表示…...
关于数据拷贝赋值方法
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、关于数据拷贝赋值方法1、最基础数据类型的变量才可以直接拷贝赋值2、自己定义的大数据类型或者时类实例化的对象不可以直接拷贝赋值1、方法一:…...
Effective Java笔记(32)谨慎并用泛型和可变参数
故事的小黄花 从出生那年就飘着 童年的荡秋千 随记忆一直晃到现在 可变参数( vararg ) 方法(详见第 53 条)和泛型都是在 Java 5 中就有了,因此你可能会期待它们可以良好地相互作用;遗憾的是,它们…...
自动化内容审核:OpenClaw+Qwen3-4B-Thinking搭建个人防火墙
自动化内容审核:OpenClawQwen3-4B-Thinking搭建个人防火墙 1. 为什么需要个人内容防火墙 作为一个长期活跃在社交媒体平台的内容创作者,我最近遇到了一个棘手的问题。某天深夜发布的一条科普视频,因为背景音乐中出现了某段敏感旋律…...
口碑好的余姚加工中心编程培训哪家专业
在浙江余姚这座"中国模具之城",寻找一家专业可靠的加工中心编程培训机构,对于想要在模具数控领域发展的技术人员来说至关重要。余姚作为全国模具产业集聚地,拥有众多培训机构,但如何在众多选择中找到真正专业、实用的培…...
2025届毕业生推荐的六大降重复率助手解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 维普AIGC检测系统旨在识别学术论文里由人工智能生成的那部分内容,随着AI写作工具…...
告别模糊代码:用Source Code Pro字体拯救你的编程视力
告别模糊代码:用Source Code Pro字体拯救你的编程视力 【免费下载链接】source-code-pro Monospaced font family for user interface and coding environments 项目地址: https://gitcode.com/gh_mirrors/so/source-code-pro 你是否曾在深夜盯着屏幕&#x…...
如何高效下载ASMR音频:asmr-downloader完整使用指南
如何高效下载ASMR音频:asmr-downloader完整使用指南 【免费下载链接】asmr-downloader A tool for download asmr media from asmr.one(Thanks for the asmr.one) 项目地址: https://gitcode.com/gh_mirrors/as/asmr-downloader 在快节奏的现代生活中&#x…...
DeepTutor云服务配置:利用云端资源提升AI性能
DeepTutor云服务配置:利用云端资源提升AI性能 【免费下载链接】DeepTutor "DeepTutor: Agent-Native Personalized Learning Assistant" 项目地址: https://gitcode.com/GitHub_Trending/dee/DeepTutor DeepTutor是一款强大的Agent-Native个性化学…...
Andrej Karpathy四大AI编程原则:远程团队协作效率提升指南 [特殊字符]
Andrej Karpathy四大AI编程原则:远程团队协作效率提升指南 🚀 【免费下载链接】andrej-karpathy-skills 项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills 在当今分布式工作时代,远程团队协作已成为软件开发…...
终极TypeORM实战指南:从零到精通的完整TypeScript ORM培训方案
终极TypeORM实战指南:从零到精通的完整TypeScript ORM培训方案 【免费下载链接】typeorm TypeScript & JavaScript ORM for Node.js — supports PostgreSQL, MySQL, MariaDB, SQLite, SQL Server, Oracle, and more. 项目地址: https://gitcode.com/GitHub_T…...
CosyVoice2-0.5B入门教程:3步搭建你的专属AI语音克隆系统
CosyVoice2-0.5B入门教程:3步搭建你的专属AI语音克隆系统 1. 快速了解CosyVoice2-0.5B CosyVoice2-0.5B是阿里开源的一款强大的语音克隆与合成系统,它能让你用短短几秒钟的语音样本,克隆出几乎一模一样的声音。想象一下,你可以让…...
3步构建企业级认证系统实战指南:从0到1搭建安全认证中心
3步构建企业级认证系统实战指南:从0到1搭建安全认证中心 【免费下载链接】oauth2-server spring boot (springboot 3) oauth2 server sso 单点登录 认证中心 JWT,独立部署,用户管理 客户端管理 项目地址: https://gitcode.com/gh_mirrors/oau/oauth2-server …...
