MST

星途 面试题库

面试题:C语言中读写锁的基本使用

在Linux环境下,使用C语言编写一段简单代码,展示读写锁(pthread_rwlock)的初始化、读操作、写操作以及销毁过程。
26.2万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

// 定义全局变量和读写锁
int sharedData = 0;
pthread_rwlock_t rwlock;

// 读线程函数
void* readThread(void* arg) {
    pthread_rwlock_rdlock(&rwlock);
    printf("读线程读取数据: %d\n", sharedData);
    pthread_rwlock_unlock(&rwlock);
    return NULL;
}

// 写线程函数
void* writeThread(void* arg) {
    pthread_rwlock_wrlock(&rwlock);
    sharedData++;
    printf("写线程写入数据: %d\n", sharedData);
    pthread_rwlock_unlock(&rwlock);
    return NULL;
}

int main() {
    // 初始化读写锁
    pthread_rwlock_init(&rwlock, NULL);

    pthread_t readTid, writeTid;

    // 创建读线程
    pthread_create(&readTid, NULL, readThread, NULL);
    // 创建写线程
    pthread_create(&writeTid, NULL, writeThread, NULL);

    // 等待读线程结束
    pthread_join(readTid, NULL);
    // 等待写线程结束
    pthread_join(writeTid, NULL);

    // 销毁读写锁
    pthread_rwlock_destroy(&rwlock);

    return 0;
}