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

《Linux Robust锁》

1.Robust锁

  Robust锁(健壮锁)是POSIX线程库提供的一种特殊互斥锁,专门设计用于处理持有锁的进程或线程意外终止的情况,核心目的是解决因锁持有者崩溃导致的死锁问题。

 

2.使用场景

  多进程共享内存的时候,某个进程持有锁后崩溃。导致锁无法释放,一直阻塞其他进程获取资源。

 

初始化Robust

#include <pthread.h>pthread_mutexattr_t attr;
pthread_mutex_t mutex;// 设置锁为进程共享和Robust属性
pthread_mutexattr_init(&attr);
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);
pthread_mutex_init(&mutex, &attr);

 

使用robust锁

void* thread_func(void* arg) {int ret = pthread_mutex_lock(&mutex);if (ret == EOWNERDEAD) {printf("锁持有者崩溃,正在恢复...\n");if (pthread_mutex_consistent(&mutex) != 0) {perror("恢复锁失败");pthread_mutex_unlock(&mutex);return NULL;}printf("锁已恢复\n");} else if (ret != 0) {perror("获取锁失败");return NULL;}// 临界区操作printf("获取锁成功,执行任务...\n");pthread_mutex_unlock(&mutex);return NULL;
}

 

http://www.gsyq.cn/news/12312.html

相关文章:

  • Manim实现气泡特效
  • C# Inno Setup
  • CF2139虚拟游记
  • 融合多元定位技术,帮助应用破解精准定位难题
  • hutool主要内容list
  • Kurt-Blender零基础教程:第2章:建模篇——第3节:陈列/父子级/蒙皮/置换修改器与小狐狸角色建模 - 教程
  • 学习:uniapp全栈微信小程序vue3后台(26) - 指南
  • HTML5介绍(HTML5特性、HTML5功能) - 指南
  • 读书笔记:Oracle 自动索引:让数据库自己管索引?
  • 故障处理:Oracle RAC集群CTSS时钟同步故障案例分析与解决
  • PostgreSQL技术大讲堂 - 第106讲:分区表索引优化
  • AI智能体:从认知到实践
  • vue3小坑之-为什么把ref定义的数组赋值给数组对象后取值为空数组?
  • 【C++STL详解】带头双向循环结构 + 双向迭代器,核心接口 + 排序效率 + 避坑指南 - 教程
  • VBA ETH功能应用 | “0”代码构建SOME/IP节点
  • ISUP协议视频平台EasyCVR在智慧灯杆综合管理中的应用
  • 视觉智能赋能产业数智化升级:JBoltAI多模态技术落地实践
  • 聚焦 Java AI 开发:JBoltAI 框架支持多模型适配,打造智能应用
  • Stylus For Chrome下载地址
  • 麒麟 Linux|深入解析 Linux 文件系统架构:理念、结构与工作机制 - 教程
  • 别等碳超支才慌!EMS 像 “碳导航”,提前预警能耗 “堵点”,双碳路上不绕路
  • Halcon图像——相机图像采集模式
  • Gitee:本土化DevOps平台如何助力企业实现研发效能跃迁
  • 告别等待:5 个 systemd 优化技巧,显著加速你的 Linux 启动
  • pod启动后一直containerCreating状态解决
  • [PaperReading] REACT: SYNERGIZING REASONING AND ACTING IN LANGUAGE MODELS
  • 深入解析:【Java开发:Lambda表达式】
  • 算法第一章作业
  • 采购系统
  • PostgreSQL patroni 高可用 1:ectd 安装和配置