zoukankan      html  css  js  c++  java
  • 011 异步I/O处理 003

     异步I/0
      ○ 使用设备内核对象
      ○ 使用事件内核对象 提醒同步以及交互
      ○ 可提醒I/O 不可跨线程的
      ○ I/O完成端口

      ⊙ I/O完成端口

        ○ 串行模型来进行异步IO操作
        ○ 并行模型 -> 多线程

        ○ 1个工人 -> 加工零件 -> 5天 -> 串行
        ○ 5个工人 -> 加工零件 -> 1天 -> 并行

        ○ 单核 -> 模拟出来的多进程 线程
        ○ 多核 -> 多线程 核心数 -> CPU的一个核心
        ○ 一个进程内可以有多个线程 多线程
        ○ 线程和线程之间可以相互融合

      ⊙ I/O完成端口 天生就是并行模式

        ○ 并行模型 -> 多线程

        ○ 创建队列
          ○ 设备
          ○ 设备

        ○ 设备操作的队列

          ○ 线程池
          ○ 多个线程

        ○ 创建一个完成端口

    1     HANDLE hIOCP = CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr, 0, 0);

    ● CreateIoCompletionPort 函数
    1 HANDLE WINAPI CreateIoCompletionPort(
    2   _In_     HANDLE    FileHandle,                        //内核对象
    3   _In_opt_ HANDLE    ExistingCompletionPort,        //已存在的完成端口 为NULL 则位新建一个IOCP
    4   _In_     ULONG_PTR CompletionKey,                    //传递处理函数的参数
    5   _In_     DWORD     NumberOfConcurrentThreads        //设置线程数 尽量根据物理实际设置
    6 );

    ● PostQueuedCompletionStatus
    1 BOOL WINAPI PostQueuedCompletionStatus(
    2   _In_     HANDLE       CompletionPort,                    //指定想向其发送一个完成数据包的完成端口对象
    3   _In_     DWORD        dwNumberOfBytesTransferred,        //指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数
    4   _In_     ULONG_PTR    dwCompletionKey,                //指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数
    5   _In_opt_ LPOVERLAPPED lpOverlapped                    //指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数
    6 );
    
    
    ● GetQueuedCompletionStatus
    BOOL WINAPI GetQueuedCompletionStatus(
      _In_  HANDLE       CompletionPort,                //指定想向其发送一个完成数据包的完成端口对象
      _Out_ LPDWORD      lpNumberOfBytes,            //一次完成后的I/O操作所传送数据的字节数。
      _Out_ PULONG_PTR   lpCompletionKey,            //当文件I/O操作完成后,用于存放与之关联的CK。
      _Out_ LPOVERLAPPED *lpOverlapped,            //OVERLAPPED  结构体指针
      _In_  DWORD        dwMilliseconds                //用于指定调用者等待CP的时间。
    );


  • 相关阅读:
    60款很酷的 jQuery 幻灯片演示和下载
    分享27款非常棒的 jQuery 表单插件
    10款新鲜出炉的 jQuery 插件
    5 个很炫的 HTML5 游戏
    12款高质量的免费 HTML 网页模板下载
    jquery插件整理篇(四)自动补全类插件
    jquery插件整理篇(三)图片展示插件
    超强1000个jquery插件!
    34个漂亮的应用程序后台管理系统界面(系列二)
    jquery插件整理篇(九)数据验证类
  • 原文地址:https://www.cnblogs.com/sdk123/p/6915762.html
Copyright © 2011-2022 走看看