《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; }
浙公网安备 33010602011771号