《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;
}

 

posted @ 2025-09-26 15:13  一个不知道干嘛的小萌新  阅读(9)  评论(0)    收藏  举报