读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。

这里我们出现了一个新的概念,自旋锁; 
锁分为两种,一是自旋锁,即在正处在临界资源的线程很短的时间内将释放锁,所以自旋锁再没有申请到锁的情况下,等待的过程中隔一小段时间就去看是否释放了资源;例如读写锁 
第二种是挂起等待锁,即在没有申请到资源的情况下,一直挂起等待直到有空闲的资源,例如:信号量、互斥锁

读写锁的函数接口 
读写锁的初始化与销毁 
 
参数rwlock表示的是一个读写锁,attr是读写锁的属性,一般设置为NULL;

读加锁: 

写加锁 
 
rdlock若申请不到锁,则自旋,tryrdlock若申请不到锁,则返回,由用户自旋;

解锁: 

读者—写者模型 
代码验证读写锁 
 

我们可以通过让读者速度快而写者速度慢来验证出写者的优先级是高于读者的 

linux线程下的读写锁相关推荐

  1. linux线程同步(3)-读写锁

    一.概述                                                    读写锁与互斥量的功能类似,对临界区的共享资源进行保护!互斥量一次只让一个线程进入临界区, ...

  2. Windows平台下的读写锁

    Windows平台下的读写锁 简单介绍Windows平台下的读写锁以及实现. 背景介绍 Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initial ...

  3. linux库函数pthread.h------pthread_rwlock_t读写锁说明

    读写锁 索引: 初始化一个读写锁pthread_rwlock_init 读锁定读写锁 pthread_rwlock_rdlock 非阻塞读锁定 pthread_rwlock_tryrdlock 写锁定 ...

  4. linux进阶51——pthread_rwlock_t(读写锁)

    1. 概念 读写锁与互斥量类似.但是互斥量要么是锁住状态,要么就是不加锁状态,而且一次只有一个线程可以对其加锁 不过读写锁允许更高的并行性,而且有更多的状态 读写锁可以有3种状态: ①读模式下加锁 ② ...

  5. 【Linux内核】RW读写锁机制

    读写锁机制 Linux内核中读写锁的机制是一种多读单写的锁机制,它允许多个读操作同时进行,但只能有一个写操作进行.当有写操作时,所有读操作都会被阻塞,直到写操作完成. 在内核中,读写锁主要由以下两个结 ...

  6. Linux多线程的同步------读写锁

    前面介绍过Linux多线程同步的另外两个方法------互斥锁和信号量 Linux多线程的同步-----信号量和互斥锁_神厨小福贵!的博客-CSDN博客 下面来看一下读写锁: 读写锁和互斥锁都带有一个 ...

  7. 信号量、使用信号量来完成读写模型(消费者生产者模型)线程池、读写锁面试题

    多线程3 信号量 资源计数器 信号量和条件变量的对比 信号量的互斥与同步 接口 信号量类型 初始化 等待接口 发送接口 销毁接口 使用信号量完成读写模型 线程池 本质 如何让一个线程池可以处理多种多样 ...

  8. Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)

    同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两 个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容 ...

  9. linux 进程 读写锁,linux 下实现高性能读写锁(read/write lock)

    前一篇文章分析了Windows slim read/write lock的工作原理.我们知道它的设计相当精妙,于是我们可以借鉴它的思路来设计linux下的读写锁. 在这个读写锁的设计上,需要注意的是l ...

最新文章

  1. Eclipse解决Ctrl+c很卡的方法
  2. 请求中文乱码_【1】执行Http请求访问网页
  3. 精品网摘:大内核锁将何去何从
  4. myeclipse新建映射文件xxx.hbm.xml
  5. linux脚本重启进程,linux下通过脚本实现自动重启程序
  6. 【MFC】CFrameWnd类详解
  7. php ping主机名,PHP PING值函数
  8. Java占位符替换工具类
  9. Html body的滚动条禁止与启用
  10. AR增强现实开发介绍
  11. Chapter 5 Blood Type——15
  12. 从零基础入门Tensorflow2.0 ----六、27 卷积神经网络
  13. java数独最快解,Java解数独--世界最难数独
  14. Django教程 —— 站点后台管理
  15. 网页版MSDOS的实现网站
  16. 深度揭密SSD中的原片/白片/黑片:莫贪小便宜
  17. 联通发布“沃云”品牌 推出云计算产品
  18. 鸿蒙系统深度解读(三)
  19. PHP 核心技术与最佳实践
  20. python自定义损失函数_tensorflow 自定义损失函数示例代码

热门文章

  1. 08、MySQL—字符串型
  2. 前端的百度地图的api的使用
  3. .net中的SelectList在Html.DropdownList中的使用
  4. GMM高斯混合模型学习笔记(EM算法求解)
  5. [GRYZ2015]快排练习
  6. 关于UIWebView与js交互的问题
  7. JQuery选择器大全
  8. 打算把我的视频工具整合一下
  9. 读书感想--list/BSS等等
  10. 函数作用域的静态变量