我正在做一個采集程序,有一張架構(gòu)圖見此</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>這里我遇到一個問題,當(dāng)pc1,pc2根據(jù)采集的結(jié)果都想要寫一個文件比如a.txt,pc1檢測DAS上沒有該文件就創(chuàng)建了一個開始寫,而pc2同時也在檢測發(fā)現(xiàn)也沒有a.txt又創(chuàng)建了a.txt,由于pc2在后將覆蓋掉pc1寫入a.txt的內(nèi)容,這時如何來處理使用mutex?</P> <P>問題就是,程序在各自的pc上運(yùn)行,而儲存是放在一塊硬盤上,兩臺或多臺機(jī)子可能重寫一個文件,這個是不是涉及到分布式儲存了,腦子好亂~~
2 回答

胡說叔叔
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個贊
采用 CreateNew 的方式創(chuàng)建文件,那么第二個進(jìn)程創(chuàng)建文件必然失敗,這時再重新打開文件讀寫。 讀寫時不要采用共享方式,而是采用獨(dú)占方式讀寫,那么當(dāng)一個進(jìn)程在讀或?qū)憰r,另一個進(jìn)程無法進(jìn)行操作,讓其進(jìn)行等待,就可以了。 雖然不在一臺機(jī)器,這種方式我覺得也應(yīng)該是有效的,這也是最簡單的方式。

繁星點(diǎn)點(diǎn)滴滴
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個贊
可以這樣設(shè)計,客戶機(jī)pc要寫文件之前必須向server申請寫文件,server接收到申請,先看是不是有其他pc已經(jīng)在寫了,如果有,讓pc等待,或者放棄;如果沒有,則pc可以繼續(xù)寫文件,寫完之后通知server寫完畢。
- 2 回答
- 0 關(guān)注
- 439 瀏覽
添加回答
舉報
0/150
提交
取消