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/ –
真的,写入第一个问题是无关紧要的。在发出请求时,必须指定要写入的偏移量,因为没有“写入文件末尾”选项,并且由于异步句柄不像跟踪同步句柄一样跟踪当前位置。 –