您的位置:首页 > 其它

关于锁的一些想法

2017-07-19 00:00 246 查看
锁有很多种,总结目前流行的几个做法,

1,锁小不锁大,换句话说,锁的粒度问题,类似数据库,有表锁和行锁,并降低锁的粒度,可以显著降低竞争。当然,锁粒度不是越小越好,应该是锁该锁的数据。

2,锁写不锁读,还是数据库,读写是分别加锁的,写的操作往往几十倍于写,没必要将所有数据锁住。

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

4,然后,能不能避开锁,类似的go的chan,使用chan,消息复用式的实现的chan消费者池(多协程从同一个chan中取数据),和使用chan chan 管道的管道方式的消费者池,前者会有竞争,性能会差于后者。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: