首页 新闻 会员 周边 捐助

Asp.net 在iis中运行,开启多个工作进程时,lock关键字还有效吗

0
悬赏园豆:200 [已解决问题] 解决于 2013-12-26 14:38

  如题,服务端应用程序池如果启用了多个工作进程,那么会有多个W3WP.exe进程,这个时候通过lock关键字实现的单例是不是不再起作用,如果要实现单例该怎么做。

二豆的主页 二豆 | 初学一级 | 园豆:44
提问于:2013-12-26 13:17
< >
分享
最佳答案
1

无效。

收获园豆:150
Launcher | 高人七级 |园豆:45050 | 2013-12-26 13:34

无效的话,那怎么实现单例呢

二豆 | 园豆:44 (初学一级) | 2013-12-26 13:47

@深蓝色左手: 你的单例是干嘛用的?

Launcher | 园豆:45050 (高人七级) | 2013-12-26 13:56

@Launcher: 比如我要一个对象管理在线用户

二豆 | 园豆:44 (初学一级) | 2013-12-26 13:58

@深蓝色左手: 那么你这里第一个涉及到的问题,就是你需要在一个位置放置你的在线用户,对吧!假设是 List<User> onlineUsers,那么你需要在多个应用程序域(或进程)中去访问 onlineUsers 。那么,现在这样来看,你有多个进程(.exe ),需要访问同一份在线用户列表(onlineUsers),你会怎么做?

Launcher | 园豆:45050 (高人七级) | 2013-12-26 14:03

@Launcher: 只能提供一个唯一的进程存放onlineUsers,所有进程都去这个进程里取,就像,开启多个W3WP的时候回话状态需要使用状态服务器一样, 是这个意思吗?,难道要弄个windows服务? 在不存数据库的前提下有没有更好的方式啊

二豆 | 园豆:44 (初学一级) | 2013-12-26 14:11

@深蓝色左手: 是的,这就是最好的方式。松耦合,易扩展,把它独立为一个子系统,外部系统只需要添加用户,读取统计就 OK 了。

当然你也可以看下这个:http://blog.163.com/yhs020@126/blog/static/372982182006328938370/

进程间同步的话最简单的是使用 CreateMutex 。

Launcher | 园豆:45050 (高人七级) | 2013-12-26 14:28

@Launcher: 谢谢!

二豆 | 园豆:44 (初学一级) | 2013-12-26 14:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册