文章目录
1.读写锁概念
1.读写锁的适用场景?
互斥锁- - -读写串行
读写锁- - -:
读: 并行
写:串行
程序中的读操作大于写操作的时候
2.代码展示
创建三个写线程,创建五个读线程
为了防止数据混乱(CPU调度问题)
需要给共享资源上锁,保证数据的整齐
使用读写锁
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <pthread.h>
int number=0;
//创建读写锁
pthread_rwlock_t lock;
void* write_func(void* arg) {
//循环写
while(1) {
pthread_rwlock_wrlock(&lock);
number++;
printf("==write:%lu,%d\n",pthread_self(),number);
//解锁
pthread_rwlock_unlock(&lock);
sleep(1);
}
return NULL;
}
void* read_func(void* arg) {
while(1) {
//加读锁
pthread_rwlock_rdlock(&lock);
printf("==read:%lu,%d\n",pthread_self(),number)