当前位置: 首页 > 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.hskmm.com/?act=detail&tid=18044

相关文章:

  • Manim实现气泡特效
  • 完整教程:决策树(Decision Tree)
  • C# Inno Setup
  • CF2139虚拟游记
  • 新方向 - MKT
  • 翻斗幼儿园历险记-CTF-WP
  • .net8+winform+Antdui 制作 LOL 小助手
  • 深入解析:【Git】Git 简介及基本操作
  • hutool主要内容list
  • 20250916_QQ_Powershell
  • 完整教程:HTTP安全响应头--CSP(Content-Security-Policy)
  • 原码,反码,补码
  • Experiment1
  • 读书笔记:Oracle 自动索引:让数据库自己管索引?
  • 1_2025.9.26_1
  • 故障处理:Oracle RAC集群CTSS时钟同步故障案例分析与解决
  • Linux系统提权-web/普通用户-docker逃逸提权shell交互
  • PostgreSQL技术大讲堂 - 第106讲:分区表索引优化
  • 四边形不等式优化
  • 斜率优化
  • AI智能体:从认知到实践
  • Kinect屏幕边缘检测不灵敏的解决方案
  • 暴力拓客游戏小程序:助力商家高效引流与裂变的智能解决方案
  • vue3小坑之-为什么把ref定义的数组赋值给数组对象后取值为空数组?
  • 第二类斯特林数
  • 群论
  • 扫码签到赢大奖小程序:助力多场景获客的智能营销工具
  • docker 镜像/容器
  • jmeter命令行参数详细解释
  • RK3399:性能与能效的嵌入式先锋,解锁多场景应用潜力