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个

  • 相关阅读:
    gcc相关
    test
    第二次课
    VS快捷键
    第7章 站在对象模型的尖端
    第6章 执行期语意学
    第5章 构造, 析构, 拷贝语意学
    第4章 Function语意学
    第一次课
    第3章 Data语意学
  • 原文地址:https://www.cnblogs.com/sysnap/p/4414630.html
Copyright © 2011-2022 走看看