当前位置: 首页 > news >正文

Linux -- 互斥锁

互斥锁

互斥锁核心概念

互斥锁(Mutex):用于多线程之间对共享资源互斥访问,保证同一时刻只有一个线程能进入临界区执行。

  • 作用:解决线程并发时的数据混乱、覆盖、计算错误

  • 本质:一把二值锁(0/1)

  • 原则:同一时间只允许一个线程持有锁

互斥锁四大函数

头文件:

#include <pthread.h>
1. 初始化互斥锁
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);
  • mutex:互斥锁变量地址

  • attr:属性,一般填NULL

  • 返回:成功 0,失败非 0

2. 加锁(阻塞)
int pthread_mutex_lock(pthread_mutex_t *mutex);
  • 能拿到锁:直接上锁,继续执行

  • 拿不到锁:阻塞等待,直到锁被释放

3. 解锁
int pthread_mutex_unlock(pthread_mutex_t *mutex);
  • 释放锁,唤醒等待该锁的线程

4. 销毁锁
int pthread_mutex_destroy(pthread_mutex_t *mutex);
  • 用完锁必须销毁,释放资源

使用流程(固定模板)

  1. 定义全局互斥锁:pthread_mutex_t mutex;

  2. 初始化:pthread_mutex_init(&mutex, NULL);

  3. 访问共享资源前:lock

  4. 访问完共享资源:unlock

  5. 最后销毁:pthread_mutex_destroy(&mutex);

考点(⭐)

  1. 互斥锁保证临界区同一时间只有一个线程执行

  2. 加锁必须成对出现:lock ↔ unlock

  3. 忘记解锁 →死锁,程序卡死

  4. 锁的粒度越小,并发效率越高

  5. 只锁共享资源,不锁无关代码

  6. 互斥锁属于线程级,不能用于进程间

互斥锁 = 线程安全的通行证

谁拿到锁谁执行临界区,没拿到就阻塞等待,保证数据不乱。

http://www.jsqmd.com/news/717382/

相关文章:

  • Universal-G-Code-Sender与UGS Platform对比:选择适合你的CNC控制方案
  • 灌浆料生产厂家哪家好?2026浙江灌浆料/石膏基自流平/水泥基自流平厂家实力分析与品牌优选推荐 - 栗子测评
  • GUITION JC4880P433开发板:物联网与边缘AI的硬件利器
  • Lighthouse性能优化终极指南:从性能杀手到体验加速器的实战秘籍
  • 厨房自动灭火装置哪家好?2026厨房灭火设备厂家推荐/厨房自动灭火设备厂家推荐:顺康鑫领衔,优质厨房灭火设备生产厂家盘点 - 栗子测评
  • Get-cookies.txt-LOCALLY:浏览器Cookie本地化管理的革命性解决方案
  • powertoys下载 微软powertoys中文版安装
  • 2026年最新EDTA四钠厂家/EDTA二钠厂家盘点与推荐:南风领衔,口碑好|供货稳的品牌盘点 - 栗子测评
  • 对标OpenClaw,版国产“小龙虾” WorkBuddy正式上线了!
  • FastSpeech2完整指南:从零开始构建高效的文本转语音系统
  • UnityExplorer终极指南:如何在游戏运行时调试和修改Unity游戏
  • 2025年微前端终极指南:彻底告别框架绑定困境
  • 甘肃凤铝门窗总代理商盘点:兰州凤铝门窗厂家哪家好?2026年口碑好的凤铝门窗加盟厂家/凤铝门窗源头厂家推荐:鑫恒发领衔 - 栗子测评
  • Complete-Data-Science项目实战:从数据预处理到模型部署的完整流程
  • 实时数字孪生 × 可执行元神:镜像视界终结仿真滞后时代
  • 零数据出境:PrivateGPT本地化部署实现GDPR合规的终极方案
  • MEGAcmd性能优化技巧:提升文件传输速度与资源利用率
  • Universal-G-Code-Sender多语言支持教程:打造国际化CNC操作界面
  • React-swipeable:终极React滑动事件处理钩子完全指南
  • 为什么你的运放电路波形失真?可能是压摆率(SR)在捣鬼(附OPA333实测数据)
  • Java的java.util.random标准特性
  • 告别繁琐编码:3步实现DevToys与Power Apps低代码集成
  • Pycord性能优化技巧:10个方法让你的机器人运行更快更稳定
  • 终极指南:iView模态框与下拉菜单的完美焦点控制技巧
  • 你还在用Union[str, int]?Python 3.15的TypeAliasRef与递归类型支持已正式启用(仅剩最后3周兼容窗口期)
  • 如何高效使用Locale Emulator:Windows区域模拟的完整指南
  • LeetCode 基数排序题解
  • SeqGPT-560M在法务合规场景应用:合同关键条款(金额/期限/违约方)自动定位
  • 镜像视界,定义执行时代
  • HASS测试提升电源设备可靠性的原理与实践