近日在做多窗口渲染的时候(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)要更有效率。
以上代码必有不到之处,欢迎各位指出。