线程的同步之读写锁rwlock(二)
1.什么是读写锁?
读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程。当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步,
相对互斥量只有加锁和不加锁两种状态,读写锁有三种状态:读模式下的加锁,写模式下的加锁,不加锁。
读写锁的使用规则:
● 只要没有写模式下的加锁,任意线程都可以进行读模式下的加锁;
● 只有读写锁处于不加锁状态时,才能进行写模式下的加锁;
pthread_rwlock_init():该函是对pthread_rwlock_t类型的读写锁进行初始化。
pthread_rwlock_destroy ():该函是对pthread_rwlock_t类型的读写锁进行初始化。
pthread_rwlock_wrlock():该函数是写加锁
pthread_rwlock_rdlock():该函数是对读加锁
pthread_rwlock_unlock();该函数是对读加锁,写加锁进行解锁操作。
2.程序代码
结果分析:
当多线程中有读写锁的时候,在读模式加锁的情况下,所有线程都可以共享其资源,若其中有写模式加锁的情况下,若运行到写模式的加锁,必须先运行写模式加锁,在此期间其他的线程不能运行,等对其写模式加锁解锁之后其他的线程才能运行。