关于锁的一些想法

锁有不少种,总结目前流行的几个作法,数据库

    1,锁小不锁大,换句话说,锁的粒度问题,相似数据库,有表锁和行锁,并下降锁的粒度,能够显著下降竞争。固然,锁粒度不是越小越好,应该是锁该锁的数据。安全

    2,锁写不锁读,仍是数据库,读写是分别加锁的,写的操做每每几十倍于写,不必将全部数据锁住。性能

    3,锁数据不锁方法,例如,hashtable中的两个线程安全实现方式,一种就是对put get 方法加锁,put的时候,其余线程不能put,一种是对数据段加锁,反应的是两种实现。后者明显效果好于前者,前者锁会锁的粒度也会大于后者。线程

    4,而后,能不能避开锁,相似的go的chan,使用chan,消息复用式的实现的chan消费者池(多协程从同一个chan中取数据),和使用chan chan 管道的管道方式的消费者池,前者会有竞争,性能会差于后者。协程

相关文章
相关标签/搜索