精华内容
下载资源
问答
  • 读写锁

    2021-02-05 18:02:50
    读写锁可以有三种状态:读模式下加锁(读锁)、写模式加锁(写锁)和不加锁; 读写锁的特点: 1)如果某线程申请了读锁,其他线程可以再申请读锁,但不能申请写锁; 2)如果某线程申请了写锁,其他线程既不能申请读...

    互斥锁只有加锁和不加锁两种状态,同一时间只能有一个线程加锁;
    读写锁可以有三种状态:读模式下加锁(读锁)、写模式加锁(写锁)和不加锁;
    读写锁的特点:
    1)如果某线程申请了读锁,其他线程可以再申请读锁,但不能申请写锁;
    2)如果某线程申请了写锁,其他线程既不能申请读锁,也不能申请写锁;
    读写锁适合于对数据的读比写次数多的情况。
    读写锁只是一种锁机制,适合的场景,但是,在程序中,并没有规定持有读锁就一定要读数据,持有写锁就一定要写数据;
    读写锁接口:
    1)初始化读写锁
    int pthread_rwlock_init(pthread_rwlock_t* rwlock,const pthread_rwlockattr_t* attr) ;
    2)申请读锁
    int pthread_rwlock_rdlock(pthread_rwlock_t* rwlock) ;
    3)申请写锁
    int pthread_rwlock_wrlock(pthread_rwlock_t* rwlock) ;
    4)尝试申请写锁,如果有线程持有读锁或写锁,返回失败,否则成功;
    int pthread_rwlock_trywrlock(pthread_rwlock_t* rwlock) ;
    尝试申请读锁,如果有线程持有写锁,返回失败;如果有线程(一个或者多个)持有读锁,返回成功;
    int pthread_rwlock_tryrdlock(pthread_rwlock_t* rwlock) ;
    5)解锁
    int pthread_rwlock_unlock(pthread_rwlock_t* rwlock) ;
    6)销毁读写锁
    int pthread_rwlock_destroy(pthread_rwlock_t* rwlock) ;

    典型应用:
    数据库<–>缓存<–>磁盘

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,996
精华内容 6,798
关键字:

读写锁