现在的位置: 首页 > 综合 > 正文

系统程序员成长计划-并发(四)(上)

2013年02月22日 ⁄ 综合 ⁄ 共 558字 ⁄ 字号 评论关闭

转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli at hotmail dot com>

读写锁

在前面的实现中,像dlist_length这类的查询函数也要加锁,那样才能保证在查询过程中对象的状态不会被其它线程所改变。加锁阻止了其它线
程修改对象,也阻止其它线程查询对象。如果大多数情况下,线程只是查询对象的状态而不修改它,这种设计不是一种高效的方法,因为它不允许多个线程同时查
询。我们能不能实现一种锁,它能串行化对数据结构的修改,而同时支持并行的查询呢?

这就是所谓的读写锁,也称为共享-互斥锁。这种锁在数据库管理系统中(DBMS)和操作系统内核中大量应用,作为系统程序员,了解它的实现机制是有必要的。这里我们请读者实现读写锁,要求如下:

o 不依赖于特定平台。
o 在任何情况下都不带来额外的性能开销。

记住多想多练不要偷懒,学习知识点不是我们最重要的目标,知识点能帮你解决别人解决过的问题,但对你解决新问题未必有多大好处,真正的程序员不应当
只是解决问题方案的贩卖者。不断从思考中学习解决问题的方法,加上灵活应用已经掌握的知识点,你的设计水平才会大大提高,这也是《系统程序员成长计划》努
力的目标。

欢迎到Linux mobile development上交流

抱歉!评论已关闭.