2
鑑於這種僞代碼:如何保證在Windows下異步寫入文件的順序?
- 對於異步訪問打開文件
- 寫
Value1
到檔案結尾位置 - 寫
Value2
到端部的文件,在相同的線程中2 。
我可以肯定地說Value1
將總是是Value2
之前,我怎麼能避免競爭狀態?
鑑於這種僞代碼:如何保證在Windows下異步寫入文件的順序?
Value1
到檔案結尾位置Value2
到端部的文件,在相同的線程中2 。我可以肯定地說Value1
將總是是Value2
之前,我怎麼能避免競爭狀態?
我可以肯定地說值1將值2之前-allays-,而值2不會覆蓋值1
號的Win32沒有這樣的保證。
通常的做法是自己管理寫入位置,方法是指定開始在實例字段中寫入的位置。 IE瀏覽器。您確保首先完成哪個寫入並不重要。
請參閱同步和文件位置在WriteFile
的文檔中。
找到證據:「對於異步I/O支持,內核模式驅動程序不一定按照它們發送到I/O管理器的相同順序處理I/O請求,I/O管理器或更高級別的驅動程序可以在接收到I/O請求時重新排序,驅動程序可以將大量數據傳輸請求分割爲更小的傳輸請求。「 msdn.microsoft.com/en-us/library/windows/hardware/ –
真的,寫入第一個問題是無關緊要的。在發出請求時,必須指定要寫入的偏移量,因爲沒有「寫入文件末尾」選項,並且由於異步句柄不像跟蹤同步句柄一樣跟蹤當前位置。 –