问题描述
目前有两个进程A用户:a进程;asp.netv4.0(IIS用户):w3wp.exe进程这两个进程会同时访问数据库,所以利用CreateMutex创建一个互斥变量,为了适用多用户第三个参数加了Global\的变量,并且两个进程都提升了SE_CREATE_GLOBAL_NAME权限。目前的问题:如果先打开a进程,此时a进程首先创建互斥变量,再打开w3wp.exe进程,w3wp.exe进程进程访问不了该互斥变量。如果先打开w3wp.exe进程变量,此时w3wp.exe进程先创建互斥变量,再打开a进程,此时则一切正常,a进程能访问互斥变量。请问这是什么原因呢,有什么方法可以解决呢?
解决方案
解决方案二:
第一次听说web并发靠互斥变量来控制。你自己都说访问数据库了,那你应该去了解下数据库事务和锁
解决方案三:
goodjob
解决方案四:
拜托哪位大神在给我的建议吧....
解决方案五:
1楼已经是正确的建议了
解决方案六:
首先,正如#1楼所说,使用关系数据库的驱动来搞开发,不能不学习过关系数据库的事务。其次,就算是你的数据库没有事务,而你需要“控制”,你也应该仿照多用户数据库系统一样地,去设计一个服务系统,然后你的各种终端分别访问你的这个服务系统,而你的这个服务系统来访问数据库。这样也根本谈不上什么各种终端分别“互斥”的问题。第三,就算是你仍没有能力设计一个服务层,那么使用一个只有0个或者1个字节的文本文件就能实现“互斥锁”了,而且各种操作系统均兼容。不一定要使用特别的、麻烦的机制。当然你最应该考虑的,还是第一步。
时间: 2024-11-08 21:31:57