请教下关于锁的用法
代码如下:
以上代码中,由于CreateUser耗时较长,导致高并发情况下CreateUser重复执行,带来问题,于是,做了以下改进:
可这时,带来了另一个问题,大量用户被阻挡在lock外面。
请教:有什么办法,能实现lock的功能,但是允许不同的uid可以同时执行?
public ActionResult Index(string uid)
{
var user=GetUser(uid);
if(user==null){
user=CreateUser(uid);//假定耗时1s
}
...
}
以上代码中,由于CreateUser耗时较长,导致高并发情况下CreateUser重复执行,带来问题,于是,做了以下改进:
static object objLock=new object();
public ActionResult Index(string uid)
{
lock(objLock){
var user=GetUser(uid);
if(user==null){
user=CreateUser(uid);//假定耗时1s
}
...
}
}
可这时,带来了另一个问题,大量用户被阻挡在lock外面。
请教:有什么办法,能实现lock的功能,但是允许不同的uid可以同时执行?
...全文
相关推荐
turn用法.pdf
turn用法.pdf
mysql共享锁与排他锁用法实例分析
主要介绍了mysql共享锁与排他锁用法,结合实例形式分析了mysql共享锁与排他锁相关概念、原理、用法及操作注意事项,需要的朋友可以参考下
浅谈多线程中的锁的几种用法总结(必看)
下面小编就为大家带来一篇浅谈多线程中的锁的几种用法总结(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
MySQL锁的用法之表级锁
锁机制是数据库有别于文件系统的一个重要的特点,也是用来管理并发访问的一个有效的方式。MySQL的锁分为表级锁、页级锁与行级锁。表级锁是MySQL中粒度大的一种锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。常使用的MYISAM与INNODB都支持表级锁定。 表级锁定分为两类,读锁与写锁。读锁是预期将对数据表进行读取操作,锁定期间保证表不能被修改。写锁是预期会对数据表更新操作,锁定期间保证表不能被其他线程更新或读取。 读锁: 用法:LOCK TABLE table_name [ AS alias_name ] READ 指定数据表,LOCK类型为READ
linux下关闭和开启防火墙的命令
linux下关闭和开启防火墙的命令、linux下关闭和开启防火墙的命令


