我正在做一个采集程序,有一张架构图见此</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 的方式创建文件,那么第二个进程创建文件必然失败,这时再重新打开文件读写。 读写时不要采用共享方式,而是采用独占方式读写,那么当一个进程在读或写时,另一个进程无法进行操作,让其进行等待,就可以了。 虽然不在一台机器,这种方式我觉得也应该是有效的,这也是最简单的方式。
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
可以这样设计,客户机pc要写文件之前必须向server申请写文件,server接收到申请,先看是不是有其他pc已经在写了,如果有,让pc等待,或者放弃;如果没有,则pc可以继续写文件,写完之后通知server写完毕。
- 2 回答
- 0 关注
- 414 浏览
添加回答
举报
0/150
提交
取消