以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XML基础 』  (http://bbs.xml.org.cn/list.asp?boardid=1)
----  [求助] 处理 xml 文件时,并发操作的问题。  (http://bbs.xml.org.cn/dispbbs.asp?boardid=1&rootid=&id=6212)


--  作者:likebbs
--  发布时间:3/25/2004 8:46:00 PM

--  [求助] 处理 xml 文件时,并发操作的问题。
a 是一个 xml 文件。。
a1 和 a2 正在访问这个 文件。

并且两个人(暂定同时在 10:00访问文件并操作)正在对 a 文件做一些更新。。
10 分钟之后各自处理完毕保存(用 Msdom)。。。

这里有个问题,dom 是基于内存的,也就是说 a1 和 a2 处理的文件都是基于 10:00 之前的。
而他们各自所做的更新也同样基于 10:00之前的 a 文件。。
那么如果 a1 在 10:10 往 a 文件添加了一条记录,保存完毕退出。。
而 a2 在 10:15 分添加一条记录,保存完毕退出。。。
照这么推论 , a2 保存的文件应该会推翻 a1 所保存的吧 ??

有没有在处理之前加锁 的方法?
谢谢 !!


--  作者:小鞋子
--  发布时间:3/25/2004 9:34:00 PM

--  
关注...以前FOS操作文本文件可以.不知道DOM有没有..不知道可以不可借用过来呢
--  作者:xgy2000
--  发布时间:3/26/2004 9:33:00 AM

--  
我的建议是在xml中追加一个version
--  作者:likebbs
--  发布时间:3/26/2004 9:41:00 AM

--  
version ??
据我所知 version 好象是版本的意思吧??

和这个问题有什么关系呢?
请讲的明白一点,谢谢!!


--  作者:xgy2000
--  发布时间:3/26/2004 9:43:00 AM

--  
我曾经在网上看到过,没有试过
--  作者:likebbs
--  发布时间:3/26/2004 9:54:00 AM

--  
但是你说的这个 version 和如何防止并发操作 不搭边啊。。
能不能讲的具体一点呢?
这个问题很严重,如果不合理解决的话,会有麻烦的。。

谢谢!谢谢!!


--  作者:likebbs
--  发布时间:3/27/2004 10:07:00 AM

--  
我暂时想了个替代的办法:
每当执行更新操作时,
建立一个以该 XML文件名/路径  为变量的 application 变量。
并且给这个 application 赋值为1, 表示暂时锁定。。
执行更新完毕后再将这个 application 变量释放,节省内存空间。

只要碰到更新操作时,总判断一下该 XML文件名/路径 为变量的application 是否为 1。
如果是 1 ,说明有人在更新此文件,如果为空则表示 可以进行更新操作。。

不知道这种方法是否消耗系统资源????


--  作者:booolee
--  发布时间:3/27/2004 1:16:00 PM

--  
不知道有没有锁定功能~~~
--  作者:小鞋子
--  发布时间:3/28/2004 11:57:00 AM

--  
以下是引用likebbs在2004-3-27 10:07:12的发言:
我暂时想了个替代的办法:
每当执行更新操作时,
建立一个以该 XML文件名/路径  为变量的 application 变量。
并且给这个 application 赋值为1, 表示暂时锁定。。
执行更新完毕后再将这个 application 变量释放,节省内存空间。

只要碰到更新操作时,总判断一下该 XML文件名/路径 为变量的application 是否为 1。
如果是 1 ,说明有人在更新此文件,如果为空则表示 可以进行更新操作。。

不知道这种方法是否消耗系统资源????



我认为目前的一个方法是这个.
而实际中如果这样.这样又如何解决.

用户一,加载完XML文件.就锁定.
application产生
用户二无法加载.在等....

1------------------------------

用户一,特然要打很久....或已掉线.
用户二.还在等很久.无法加载

2------------------------
用户一,在修改数据花了半小时打完.
用户二,才可以加载.

3---------------------------
用户一,同样花了很长时间在修改数据.系统认为此用户掉线.application解锁
而事实想用户一的内存还有加载着旧的数据.

用户二,在用户一掉线时同样加载了文件.

此时各修改了不同数据.那么.大家再一保存.就可想而之.结果会不一样了.
或者说.在用户二保存后.用户一不能再保存.那么用户一所做的一切就会白白浪费..


-------------OVER


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms