Windows编程——读写锁
前言
在Windows上使用读写锁很方便,只需要了解几个非常简单的API即可使用,可能只需要花上数分钟而已,在这点上与Linux无异!
简介
众所周知,多线程不能同时读写某段内存,但可以共享读,在这种场景下正好可以使用读写锁——共享读,互斥读写,互斥写写。在这种场景下读写锁是优于临界区和互斥对象的。
当然Windows提供的读写锁有一定的缺陷:
1、不同于Linux,不支持TryLock系列函数,也就是说,调用获取锁的API,如果锁被占用了,那么会阻塞调用线程。
2、不支持递归调用。
注意事项
不存在释放或销毁读写锁的函数,系统会自动执行清理工作。
相关API
//
//定义读写锁
RTL_SRWLOCK rdlock;//初始化读写锁
VOID WINAPI InitializeSRWLock( _Out_ PSRWLOCK SRWLock );
////
//申请读锁
VOID WINAPI AcquireSRWLockShared(_Inout_ PSRWLOCK SRWLock);//释放读锁
VOID WINAPI ReleaseSRWLockShared(_Inout_ PSRWLOCK SRWLock);
////
//申请写锁
VOID WINAPI AcquireSRWLockExclusive(_Inout_ PSRWLOCK SRWLock);
Windows编程——读写锁相关推荐
- 【C/C++多线程编程之九】pthread读写锁
多线程编程之读写锁 Pthread是 POSIX threads 的简称,是POSIX的线程标准. pthread读写锁把对共享资源的访问者分为读者和写者,读者只对共享资源进行读访问,写者只对共享资源 ...
- Linux多线程编程---线程间同步(互斥锁、条件变量、信号量和读写锁)
本篇博文转自http://zhangxiaoya.github.io/2015/05/15/multi-thread-of-c-program-language-on-linux/ Linux下提供了 ...
- Java Review - 并发编程_读写锁ReentrantReadWriteLock的原理源码剖析
文章目录 ReentrantLock VS ReentrantReadWriteLock 类图结构 非公平的读写锁实现 写锁的获取与释放 void lock() void lockInterrupti ...
- 并发编程中常见的锁机制:乐观锁、悲观锁、CAS、自旋锁、互斥锁、读写锁
文章目录 乐观锁 VS 悲观锁 悲观锁 乐观锁 CAS CAS机制 ABA问题 CAS的优缺点 互斥锁 VS 自旋锁 互斥锁 自旋锁 对比及应用场景 读写锁 实现方式 读写锁 VS 互斥锁 乐观锁 V ...
- Linux系统编程----16(线程同步,互斥量 mutex,互斥锁的相关函数,死锁,读写锁)
同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两 个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数据库内容 ...
- 并发编程概念、程序线程进程、线程同步、互斥量、读写锁、协程并发
多线程: 多线程就是同时执行多个应用程序,需要硬件的支持 同时执行:不是某个时间段同时,cpu切换的比较快,所有用户会感觉是在同时运行 并发与并行: 并行(parallel):指在同一时刻,有多条指令 ...
- Windows平台下的读写锁
Windows平台下的读写锁 简单介绍Windows平台下的读写锁以及实现. 背景介绍 Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initial ...
- JUC并发编程第十四篇,StampedLock(邮戳锁)为什么比ReentrantReadWriteLock(读写锁)更快!
JUC并发编程第十四篇,StampedLock(邮戳锁)为什么比ReentrantReadWriteLock(读写锁)更快! 一.ReentrantReadWriteLock(读写锁) 1.读写锁存在 ...
- golang:1.并发编程之互斥锁、读写锁详解
本文转载自junjie,而后稍作修改. 一.互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段.它由标准库代码包sync中的Mutex结构体类型代表.sync.Mutex类型(确切地说,是 ...
最新文章
- puppet cert maintain
- 用VSCode写python的正确姿势
- 负荷计算的时候assert失败_负荷计算的入门基础知识,小白入门必备!
- Codeforces 1205C Palindromic Paths (交互题、DP)
- JavaScript通过 new FileReader() 获取图片base64 无组件上传图片
- android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法
- 2020-10-03
- error: unrecognized arguments: 不运行_JavaScript函数 arguments
- 关于 Android 8.0 gts 的 widevine 类问题 GtsMediaTestCases / GtsExoPlayerTestCases
- 物联网技术概论:第2章
- MySQL 事务的特性
- source 还原数据库
- 罗素“杀死了”康托尔
- 还在花钱抢票?12306 已屏蔽60款抢票软件!
- N-gram模型详解
- python之excel编程
- 毕业设计——GPU地形高度查询
- 显示答案c语言代码编程,c语言编程例题及答案
- 【181220】VC++学生考试系统(Access)源代码
- Emlog最新文章采集插件