zoukankan      html  css  js  c++  java
  • 异步机制

    1 前面说到 GetOverlappedResult的bWait含义

    GetOverlappedResult的bWait含义表示是否需要等待,如果IO还处于PENDING状态,内部大概实现是这样

      hObject = lpOverlapped->hEvent ? lpOverlapped->hEvent : hFile;
      WaitStatus = WaitForSingleObject(hObject, INFINITE);

    为啥OVERLAPPED里面要有hEvent 这个字段,干嘛用的?假设这样的场景,打开一个文件句柄,发起多次异步的读请求,那请求完成如何知道是对应哪次读请求?通过hFile来区分显然不行了,这种情况下,需要为每次IO请求来分配一个事件,当一次IO完成时,这个事件会设置成受信状态。因为WaitForMultipleObjectsEx最多只能传递64个句柄,所以这种方式同时能处理的请求只限制在64个

  • 相关阅读:
    第一周作业
    第八周作业
    第七周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业(markdown版本)
    第一周作业
    第六次作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/sysnap/p/4414630.html
Copyright © 2011-2022 走看看