为了账号安全,请及时绑定邮箱和手机立即绑定

我的问题都很怪,可能是关于Mutex

我的问题都很怪,可能是关于Mutex

开心每一天1111 2018-11-22 05:02:24
我正在做一个采集程序,有一张架构图见此</P> <P><A href="http://www.cnblogs.com/lexus/default.html?page=2">http://www.cnblogs.com/lexus/default.html?page=2</A></P> <P>这里我遇到一个问题,当pc1,pc2根据采集的结果都想要写一个文件比如a.txt,pc1检测DAS上没有该文件就创建了一个开始写,而pc2同时也在检测发现也没有a.txt又创建了a.txt,由于pc2在后将覆盖掉pc1写入a.txt的内容,这时如何来处理使用mutex?</P> <P>问题就是,程序在各自的pc上运行,而储存是放在一块硬盘上,两台或多台机子可能重写一个文件,这个是不是涉及到分布式储存了,脑子好乱~~
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

采用 CreateNew 的方式创建文件,那么第二个进程创建文件必然失败,这时再重新打开文件读写。 读写时不要采用共享方式,而是采用独占方式读写,那么当一个进程在读或写时,另一个进程无法进行操作,让其进行等待,就可以了。 虽然不在一台机器,这种方式我觉得也应该是有效的,这也是最简单的方式。

查看完整回答
反对 回复 2018-11-23
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

可以这样设计,客户机pc要写文件之前必须向server申请写文件,server接收到申请,先看是不是有其他pc已经在写了,如果有,让pc等待,或者放弃;如果没有,则pc可以继续写文件,写完之后通知server写完毕。

查看完整回答
反对 回复 2018-11-23
  • 2 回答
  • 0 关注
  • 414 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信