读写锁的使用规则

读写锁: 读锁(共享锁) —> 访问临界资源,可以一起读取数据 --> 读锁可以同时上,不会阻塞!
写锁(互斥锁) —> 访问临界资源时,不要一起修改值 --> 写锁不能同时上锁,会阻塞!

1. 初始化读写锁 – pthread_rwlock_init() -> man 3

pthread_rwlock_init

  #include <pthread.h>

int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,
const pthread_rwlockattr_t *restrict attr);

rwlock: 读写锁的地址 attr: 锁属性,普通属性: NULL

返回值: 成功: 0 失败: 错误码

2. 读锁上锁(多个线程可以同时上锁) – pthread_rwlock_rdlock()

#include <pthread.h>

   int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);

rwlock: 已经初始化过的锁的变量地址

返回值: 成功: 0 失败: 错误码

3. 写锁上锁(写锁不能同时上锁) — pthread_rwlock_wrlock()

#include <pthread.h>

  int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);

rwlock: 已经初始化过的锁的变量地址

返回值: 成功: 0 失败: 错误码

4. 读写锁解锁 — pthread_rwlock_unlock()

#include <pthread.h>

int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);

rwlock: 已经初始化过的锁的变量地址,正在上锁的状态
返回值: 成功: 0 失败: 错误码

5. 销毁读写锁 — pthread_rwlock_destroy()

#include <pthread.h>

  int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);

rwlock: 已经初始化过的锁的变量地址

返回值: 成功: 0 失败: 错误码


#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int num = 0; //临界资源
pthread_rwlock_t rwlock;

void *routine1(void *arg)
{
   
	    //3. 一旦写锁上锁,别的线程就不能够写锁上锁
	pthread_rwlock_wrlock(&rwlock
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值