首页 新闻 搜索 专区 学院

用什么方法可以避免lock带来的并发性能问题?

0
悬赏园豆:50 [已解决问题] 解决于 2009-07-26 16:54

lock代码片断锁用来控制只有单条被执行,但是听说会带来应用的并发性能问题,那么请问下有哪些主法可以替换或是解决lock问题呢!?

问题补充: eaglet 的不同级别的锁的方式很好,不过实现上还没想到比较好的方式!能不能大概给个实现的代码!?
chen eric的主页 chen eric | 初学一级 | 园豆:4
提问于:2009-07-22 13:15
< >
分享
最佳答案
0

设计共享锁和独占锁,当读取时使用共享锁,写入时才使用独占锁。另外锁定的数据颗粒度尽可能小。这样就可以最大限度保证并发。

eaglet | 专家六级 |园豆:17139 | 2009-07-23 08:00
其他回答(4)
0

只要注意不该锁的别锁,锁的时间尽量短,别多出锁的时候没搞好弄成死锁就行。

用对了就不会有问题,仅在同步时降低性能,这是无可避免的,为了数据安全、正确只得如此。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-07-22 14:25
0

不并发就可以了

用容量来提高速度

小眼睛老鼠 | 园豆:2779 (老鸟四级) | 2009-07-22 15:50
0

用容量来提高速度

shiai | 园豆:225 (菜鸟二级) | 2009-07-22 21:06
0

首先必须确定是不是必须用代码片段lock;

其次,分析加锁的代码片段,找出真正需要单条执行的语句,缩小锁的范围,对于简单类型锁,使用InterLocked提供一些方法,你可以先自己看看;对于数据库级的锁,把锁交给数据库去维护.

最后,重构代码,将必须单条执行的语句提炼成单元函数,然后使用"单消费者-多生产者"模式重写业务逻辑.

Launcher | 园豆:45045 (高人七级) | 2009-07-22 21:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册