LINUX下的线程同步——mutex和读写锁

本文介绍了读写锁和互斥锁的工作原理及应用场景。读写锁允许多个线程同时读取,但写操作会阻塞其他读写请求;互斥锁则无论读写都确保同一时刻只有一个线程访问。文章还列举了与这两种锁相关的典型函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用mutex保护的代码段,无论读写,一个线程占有时,别的线程都必须等待。

 

读写锁可以使多个线程同时读取,具体说来如下:

当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。

当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权,但是如果线程希望以写模式对此锁进行加锁,它必须阻塞直到所有的线程释放锁。

通常,当读写锁处于读模式锁住状态时,如果有另外线程试图以写模式加锁,读写锁通常会阻塞随后的读模式锁请求,这样可以避免读模式锁长期占用,而等待的写模式锁请求长期阻塞。

 

和mutex相关的几个函数:

pthread_mutex_init

pthread_mutex_destroy

pthread_mutex_lock

pthread_mutex_unlock

 

和读写锁相关的几个函数:

pthread_rwlock_init

pthread_rwlock_destroy

pthread_rwlock_rdlock

pthread_rwlock_wrlock

pthread_rwlock_unlock

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值