多线程程序的临界区
所谓的临界区:是指进程中的一段需要访问共享资源并且当另一个进程处于相应代码区域时便不会被执行的代码区域
对于临界区的管理的必须要满足一下的四个要求:
互斥:同一时间临界区中最多存在一个线程
Progress:如是一个线程想要进入临界区,那么它最终会成功
有限等待:如果一个线程i处于入口区,那么在i的请求被接受之前,其他线程进入临界区的时间是有限制的。
无忙等待(可选):如果一个进程在等待进入临界区,那么在它可以进入之前会被挂起。
解决方案
①:禁用硬件中断
缺点:一旦中断被禁用,线程就无法被停止,整个系统都会为你停下来。可能导致其他线程处于饥饿状态。
②:基于软件的解决方法
③:更高级的抽象
案例分析:假设有甲乙两个人共用一个冰箱里的面包,如果那个人发现冰箱里没有面包后就去购买面包。如果保证冰箱里的面包不会多也不会少。

代码
问题:如何保证以上面包只能是某一个人购买。
解决方案一:加入lock操作原语
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2018-08-10 NPOI 操作Excel方法
2016-08-10 ASP.NET MVC Razor语法
2016-08-10 SVN Tree Conflict 的分析