Windows下使用Interlocked系列函数实现的一个轻量级读写锁

针对多窗口渲染时系统临界区效率瓶颈,本文档介绍了一种自实现的读写锁来提高渲染效率。该锁在读者多于写者场景下表现优于系统临界区,并详细展示了其实现代码及测试过程。

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

近日在做多窗口渲染的时候(128个directdraw窗口),苦于WIN系统临界区对于多读者情况下的效率问题,窗口绘制速度仅维护在12至18fps之间(设计速度为25fps,机器为i5 450m,集成显卡,4G内存,绘制线程池大小为4,线程池使用的是以下这贴的代码http://blog.youkuaiyun.com/pjchen/archive/2004/11/06/170606.aspx),就萌生了写一个读写锁的念头,在完成之后进行测试,发现虽然仍然达不到设计速度的25fps,但已提升至20至23fps了,在对读写锁进行测试时,发现在最坏的情况下(只有写者,没有读写),锁效率严重低于系统提供的临界区,在一般情况下(读者多于写者,读相对于写频繁),锁效率优于系统提供的临界区。

以下是锁实现代码:

  

以下是测试代码:

在测试中,仅测试了读者优先的情况,使用10ms的定时等待,比无限等待(传入INFINITE)要更有效率。

 

以上代码必有不到之处,欢迎各位指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值