关于锁的一些想法
2017-07-19 00:00
246 查看
锁有很多种,总结目前流行的几个做法,
1,锁小不锁大,换句话说,锁的粒度问题,类似数据库,有表锁和行锁,并降低锁的粒度,可以显著降低竞争。当然,锁粒度不是越小越好,应该是锁该锁的数据。
2,锁写不锁读,还是数据库,读写是分别加锁的,写的操作往往几十倍于写,没必要将所有数据锁住。
3,锁数据不锁方法,例如,hashtable中的两个线程安全实现方式,一种就是对put get 方法加锁,put的时候,其他线程不能put,一种是对数据段加锁,反应的是两种实现。后者明显效果好于前者,前者锁会锁的粒度也会大于后者。
4,然后,能不能避开锁,类似的go的chan,使用chan,消息复用式的实现的chan消费者池(多协程从同一个chan中取数据),和使用chan chan 管道的管道方式的消费者池,前者会有竞争,性能会差于后者。
1,锁小不锁大,换句话说,锁的粒度问题,类似数据库,有表锁和行锁,并降低锁的粒度,可以显著降低竞争。当然,锁粒度不是越小越好,应该是锁该锁的数据。
2,锁写不锁读,还是数据库,读写是分别加锁的,写的操作往往几十倍于写,没必要将所有数据锁住。
3,锁数据不锁方法,例如,hashtable中的两个线程安全实现方式,一种就是对put get 方法加锁,put的时候,其他线程不能put,一种是对数据段加锁,反应的是两种实现。后者明显效果好于前者,前者锁会锁的粒度也会大于后者。
4,然后,能不能避开锁,类似的go的chan,使用chan,消息复用式的实现的chan消费者池(多协程从同一个chan中取数据),和使用chan chan 管道的管道方式的消费者池,前者会有竞争,性能会差于后者。
相关文章推荐
- 对“关于购物车的想法”的一些回复
- 关于游戏社交的一些想法
- 关于人生的一些想法,和淘客SEO的思想。
- 关于邮政与高校合作管理的一些个人想法
- 关于监控系统的一些想法心得
- 关于jquery动态增减控件的一些想法和小插件
- 关于算法的一些想法
- 关于软件工程我的一些想法
- 关于瀑布流布局的一些想法
- 关于即时通信或者社区的一些想法
- 关于Shell脚本效率优化的一些个人想法
- 关于HTML5的一些想法
- 关于败者树多路归并时的一些想法
- [记事] 关于WEB未来发展的一些想法
- 级联删除引发的关于Hibernate级联操纵的一些想法
- 关于学习单片机的一些想法!
- 关于解压缩的一些想法
- 关于浮动的一些想法
- 基于电信定制机,关于Android中彩信信息采集的一些想法
- 关于脏光线的一些想法