Linux多线程同步方式
作者:网络转载 发布时间:[ 2015/2/12 13:57:41 ] 推荐标签:Linux 操作系统 线程
3.读写锁
1) 概念
spinlock和互斥量都是保证同一时刻只有一个线程操作共享内存。互斥锁要么是加锁状态,要么是不加锁状态,一次只有一个线程可以对其加锁。读写所可以有3种状态,读模式下加锁状态,写模式下加锁状态,不加锁状态。相对于前两者,读写锁有更高的并发度,允许多个线程同时读共享内存。
2) 相关函数
pthread_rwlock_rdlock(pthread_rwlock_t*); 读锁定
pthread_rwlock_tryrdlock(pthread_rwlock_t*); 非阻塞读锁定
pthread_rwlock_wrlock(pthread_rwlock_t*); 写锁定
pthread_rwlock_trywrlock(pthread_rwlock_t*); 非阻塞写锁定
pthread_rwlock_unlock(pthread_rwlock_t*); 释放锁
4. 条件变量
1) 概念
条件变量是另外一种同步机制,通过与互斥锁配合使用,利用锁保护条件变量,通过条件变量实现唤醒和等待的机制。通过这种方式,允许线程以无竞争的方式等待特定的条件发生
2) 相关函数
int pthread_cond_signal(pthread_cond_t *cond); //唤醒等待条件某个线程
int pthread_cond_broadcast(pthread_cond_t *cond); //唤醒等待条件所有线程
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex); //等待条件发生。
3) 说明
调用pthread_cond_wait之前,需要线程获取互斥量,调用者把互斥量传递给函数,函数把调用线程发到等待队列上,然后对互斥量解锁,这个操作是原子操作。当pthread_cond_wait返回时,互斥量会再次被锁住,这个实现都在pthread_cond_wait函数中实现,不需要用户逻辑介入。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Linux下开源的DDR压力测试工具曝Linux恶意软件:让树莓派设备挖掘数字货币linux系统中不同颜色的文件夹及根目录介绍软件测试工程师必知必会Linux命令Linux下DNS服务器配置如何成为不可替代的Linux运维工程师?详解Linux进程(作业)的查看和杀死Linux 日志定时轮询流程详解比特币勒索病毒不只Windows系统有,Linux版的来了Linux日志定时轮询流程详解Linux iommu和vfio概念空间解构Linux系统如何低于TCP洪水攻击Linux无损调整分区大小Linux下防火墙配置实例Linux使用Jexus托管Asp.Net Core应用程序Linux中引号的那些事

sales@spasvo.com