Winapi 如何保证在Windows下异步写入文件的顺序?

Winapi 如何保证在Windows下异步写入文件的顺序?,winapi,asynchronous,io,Winapi,Asynchronous,Io,给定此伪代码: 打开文件进行异步访问 将Value1写入文件末尾位置 将Value2写入文件末尾,与2位于同一线程中 我是否可以确保Value1始终在Value2之前?我如何避免比赛条件 我是否可以确保Value1将在Value2之前-allays-并且Value2不会覆盖Value1 不可以。Win32没有这样的保证 通常的方法是自己管理写入位置,方法是在重叠的实例字段中指定开始写入的位置。即,确保先完成哪项写入并不重要 请参阅文档中的同步和文件位置以了解。找到证据:“有了异步I/O支持,内核

给定此伪代码:

  • 打开文件进行异步访问
  • Value1
    写入文件末尾位置
  • Value2
    写入文件末尾,与2位于同一线程中
  • 我是否可以确保
    Value1
    始终在
    Value2
    之前?我如何避免比赛条件

    我是否可以确保Value1将在Value2之前-allays-并且Value2不会覆盖Value1

    不可以。Win32没有这样的保证

    通常的方法是自己管理写入位置,方法是在重叠的实例字段中指定开始写入的位置。即,确保先完成哪项写入并不重要


    请参阅文档中的同步和文件位置以了解。

    找到证据:“有了异步I/O支持,内核模式驱动程序不必按照I/O请求发送到I/O管理器的相同顺序处理I/O请求。I/O管理器或更高级别的驱动程序可以在收到I/O请求时对其重新排序。驱动程序可以将较大的数据传输请求拆分为较小的传输请求。“msdn.microsoft.com/en-us/library/windows/hardware/Really,哪个写入优先的问题是不相关的。您必须在发出请求时指定写入的偏移量,因为没有“写入文件末尾”选项由于异步句柄不像同步句柄那样跟踪当前位置。