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