C共享互斥锁

本文深入探讨了C语言中的线程锁机制,包括共享互斥锁和读写锁的使用方法及优缺点。详细介绍了如何使用pthread库中的mutex和rwlock函数来实现线程间的同步,以及在读操作远多于写操作场景下读写锁的优势。

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

C共享互斥锁

C普通锁

当一个地方加上锁后,其他所有想获取锁的都会阻塞

基础使用
`pthread_mutex_t mutex;`
`struct timespec time;`
`localtime(&time)/*使用绝对时间*/`
`mutex = PTHREAD_MUTEX_INITIALZER` /*后者是一个结构常量,静态初始化*/
`pthread_mutex_init(mutex, attr)`	/*可以添加属性,NULL即默认*/	
`pthread_mutex_lock(mutex)`			/*加锁,如果已经锁着则堵塞*/
`pthread_mutex_trylock(mutex)`
/*尝试加锁,成功反回0 失败返回EBUSY, 可以用来避免死锁*/
`pthread_mutex_timedlock(mutex, time)`
/*尝试加锁,超时返回ETIMEOUT*/
`pthread_mutex_unlock(mutex)`
`pthread_mutex_destroy(mutex)`
从命名就知道使用了

C读写锁

三种情况读锁、写锁、不加锁,与普通锁相比, 在读加锁情况下还是可以获得读锁, 可用于读远大于写的情况下。
使用
`pthread_rwlock_t rwlock;`
`pthread_rwlock_init(rwlock, attr)`		/*初始化*/
`pthread_rwlock_destroy(rwlock)`
`pthread_rwlock_rdlock(rwlock)`
`pthread_rwlock_wrlock(rwlock)`
`pthread_rwlock_unlock(rwlock)`
优点

在获取到写锁后,与正常相同,其他地方读写锁都无法获得。
但是当获取到读锁后,其他地方还是可以获取到读锁;
锁的目的是防止多个线程同时修改或一方修改一方读取的情况出现,但是我们如果不修改的话,可以加读锁,这样进行读的线程就没必要阻塞了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值