线程的同步之读写锁rwlock(二)

来源:互联网 发布:ubuntu 17.10安装教程 编辑:程序博客网 时间:2024/05/16 13:04

1.什么是读写锁?

读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程。当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步,

相对互斥量只有加锁和不加锁两种状态,读写锁有三种状态:读模式下的加锁,写模式下的加锁,不加锁。

读写锁的使用规则:

  ● 只要没有写模式下的加锁,任意线程都可以进行读模式下的加锁

  ● 只有读写锁处于不加锁状态时,才能进行写模式下的加锁;

 

pthread_rwlock_init():该函是对pthread_rwlock_t类型的读写锁进行初始化。

pthread_rwlock_destroy ():该函是对pthread_rwlock_t类型的读写锁进行初始化。

pthread_rwlock_wrlock():该函数是写加锁

 

pthread_rwlock_rdlock():该函数是对读加锁

pthread_rwlock_unlock();该函数是对读加锁,写加锁进行解锁操作。

2.程序代码

结果分析:

当多线程中有读写锁的时候,在读模式加锁的情况下,所有线程都可以共享其资源,若其中有写模式加锁的情况下,若运行到写模式的加锁,必须先运行写模式加锁,在此期间其他的线程不能运行,等对其写模式加锁解锁之后其他的线程才能运行。

 

 

0 0