线程概念和控制
线程概念线程是程序里的一个执行路线。一切进程至少都有一个执行线程线程在进程内部执行本质是在进程地址空间内运行分页式存储管理虚拟地址和页表的由来西靠一下如果在没有虚拟内存和分页机制的情况下每一个用户程序在物理内存上对应的空间必须是连续的每个程序的代码和数据长度不同按照这样的映射方式物理内存将会被分割成各种离散的块运行一段时间后他们占据的物理内存空间可以被回收我们希望操作系统一共给用户的空间必须是连续的但是物理内存不要连续物理内存按照一个固定的长度的页框进行分割有时叫做物理页每个页框包含一个物理页一个页大小等于页框的大小物理内存管理页框的大小会被划分但是物理页很多操作系统会进行管理持续监控struct page结构是操作系统的每个物理页为了节省内存使用了大量的联合体页表页表中的每一个表项指向一个物理页的开始地址在32位系统种虚拟内存的最大空间是4g虽然最后使用的物理内存是离散的但是与虚拟内存对应的线性地址是连续的页目录结构每一个页框都被一个页表中的一个表项来指向了这个1024个页表也需要被管理起来单级⻚表对连续内存要求⾼于是引⼊了多级⻚表但是多级⻚表也是⼀把双刃剑在减少连续存储要求且减少存储空间的同时降低了查询效率缺页异常设想CPU给MMU的虚拟地址在 TLB 和⻚表都没有找到对应的物理⻚该怎么办呢其实这就是缺⻚异常 Page Fault 它是⼀个由硬件中断触发的可以由软件逻辑纠正的错误。假如⽬标内存⻚在物理内存中没有对应的物理⻚或者存在但⽆对应权限CPU就⽆法获取数据这种情况下CPU就会报告⼀个缺⻚错误。由于CPU没有数据就⽆法进⾏计算CPU罢⼯了⽤⼾进程也就出现了缺⻚中断进程会从⽤⼾态切换到内核态并将缺⻚中断交给内核的Page Fault Handler 处理线程的优点创建新线程的代价比新进程小线程占用资源更少能充分利用多处理器的可并行数量线程的缺点性能损失健壮性降低缺乏访问控制编程难度高线程异常单个线程出现问题野指针问题会导致线程崩溃进程也会崩溃线程用途能提高IO密集型程序的用户体验Linux进程vs线程进程间具有独立性线程共享地址空间也就是共享进程资源进程和线程进程是资源分配的基本单位线程是调度的基本单位Linux线程控制POSIX线程库头文pthread.h链接这些线程函数库时要使用编译器命令的“-lpthread.h”创建线程功能创建⼀个新的线程 原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);参数: thread:返回线程ID attr:设置线程的属性attr为NULL表⽰使⽤默认属性 start_routine:是个函数地址线程启动后要执⾏的函数 arg:传给线程启动函数的参数 返回值成功返回0失败返回错误码线程停止线程函数return 这种方法对主线程不适用从main函数return相当调用exit线程可以调用pthread_exit终止自己线程等待已经退出的线程其空间没有被释放仍然在进程的地址空间内。• 创建新的线程不会复⽤刚才退出线程的地址空间。分离线程默认情况下新创建的线程是joinable的线程退出后需要对进行pthread_join操作否则无法释放资源从而造成系统泄露int pthread_detach(pthread_t thread);线程ID及进程地址空间布局pthread_create函数会产生一个线程ID存放第一个参数指向的地址中该线程ID和前面说的线程ID不是一回事pthread_create函数第⼀个参数指向⼀个虚拟内存单元该内存单元的地址即为新创建线程的线程ID属于NPTL线程库的范畴。线程库的后续操作就是根据该线程ID来操作线程的

相关新闻

随机森林时间序列预测实战:特征工程、多步策略与避坑指南

随机森林时间序列预测实战:特征工程、多步策略与避坑指南

简介:一套基于Python实现随机森林(RF)时间序列预测的完整工程包,面向需要完成课程设计、期末大作业或毕业设计的计算机、电子信息、数学等专业学生,也适合刚接触机器学习预测的新手快速上手。压缩包内共3个文件&#x…

2026/10/11 17:44:29 阅读更多 →
EP_机械双臂ROS2交互协议

EP_机械双臂ROS2交互协议

EP:Engineering and Projects 双臂轮式机器人(单臂 7 关节 夹爪)ROS2 Topic 交互协议硬件构成: 移动底盘(轮式)【本次只做状态反馈,不展开底盘控制话题】左机械臂:7 个转动关节 夹…

2026/10/11 17:44:28 阅读更多 →
人脸检测数据集从零搭建:WIDER FACE大目标子集8188张VOC转YOLO全流程

人脸检测数据集从零搭建:WIDER FACE大目标子集8188张VOC转YOLO全流程

简介:从WIDER Face中筛选出的B子集大目标人脸检测数据集,包含8188张jpg图片及对应标注,仅face一个类别,总标注框14649个。所有目标的像素面积均大于3500,专门面向近距离、大脸检测场景,可显著减少远距离小目…

2026/10/11 17:44:28 阅读更多 →

最新新闻

ComfyUI+Wan2.2文生视频实战:显存优化与参数配方全解析

ComfyUI+Wan2.2文生视频实战:显存优化与参数配方全解析

简介:一份基于 ComfyUI/Wan2.2 RapidAIOMega 的二次元文生视频配置包,面向刚入门 ComfyUI 或想快速产出二次元风格视频的创作者。核心内容为可直接导入 ComfyUI 的 JSON 工作流文件,内部已预置采样器、模型加载等基础节点,省去从零…

2026/10/11 18:29:54 阅读更多 →
零基础如何写代码?普通人不用学编程也能做系统

零基础如何写代码?普通人不用学编程也能做系统

很多想要做数字化工具、搭建管理系统的新手,都会纠结一个核心问题:零基础如何写代码?对于没有计算机基础、不懂语法逻辑、不会搭建架构的普通人来说,传统写代码的门槛极高,需要从编程语言、变量函数、语法规则、调试排…

2026/10/11 18:29:54 阅读更多 →
PHP开发者必知必会:常用算法与数据结构实战指南

PHP开发者必知必会:常用算法与数据结构实战指南

做了十年PHP开发,我越来越觉得“PHP用不到算法”这句话是个伪命题。早期做业务系统,天天写增删改查,确实用不上什么高深算法;可一旦系统开始有瓶颈——接口超时、导出卡死、内存爆掉、排行榜算半天出不来——追根溯源,…

2026/10/11 18:29:54 阅读更多 →
Flutter鸿蒙化迁移:sqfentity_gen数据持久化适配实践

Flutter鸿蒙化迁移:sqfentity_gen数据持久化适配实践

把 Flutter 应用往鸿蒙平台迁移的时候,很多团队都会在 UI 层卡一阵子,但那只是换插件、换实现的事。真正让整个项目停摆的,往往是数据持久化这一层。我接手"模拟项目X"的鸿蒙化改造时,UI 跑起来了,基础插件也…

2026/10/11 18:29:54 阅读更多 →
因果推断工程落地:从The Book of Why到DoWhy实战

因果推断工程落地:从The Book of Why到DoWhy实战

简介:《The Book of Why》中文版PDF电子书,面向数据科学从业者、统计学习者及希望提升因果推理能力的决策者,帮助读者跳出“相关不等于因果”的认知误区,系统掌握从数据中提取因果信息的思维框架。全书围绕“因果关系之梯”展开&a…

2026/10/11 18:29:54 阅读更多 →
弹弹堂源码实战:弹道模型、服务端同步与避坑改造指南

弹弹堂源码实战:弹道模型、服务端同步与避坑改造指南

简介:这是一份基于 FunCode 平台、以 C 语言开发实现的《弹弹堂》游戏源码,聚焦于完整游戏逻辑和工程结构,适合游戏开发初学者、C 学习者以及想深入了解物理模拟、碰撞检测、渲染与网络同步的开发者学习参考。压缩包共包含 177 个文件&#x…

2026/10/11 18:28:53 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →