zoukankan      html  css  js  c++  java
  • 完成端口CreateIoCompletionPort编写高性能的网络模型程序

    1、同步网络模型:就是服务端同步阻塞等待客户端的请求,然后继续操作后续处理,缺点是性能低。
    2、同步通讯+多线程模型:服务端为每个客户端分配线程,这个线程就负责这个客户端,同步通讯,同步处理这个客户端的请求,
       缺点就是当客户端很多时,线程很多,CPU在却换线程的上下文时会消耗很多资源,最终会导致CPU只用于处理上下文的却换而
       无法正常处理线程后续的流程操作
    3、完成端口,是微软提供的高性能网络处理API,底层会建立一个请求队列,并且分配几个线程等待处理。每个线程从队列里取请求
       处理,处理完成后通知应用程序接收数据。然后继续从队列取数据继续处理。这几个线程会公平的处理数据。

    完成端口函数原型
    HANDLE CreateIoCompletionPort (
      HANDLE FileHandle, // handle to file
    HANDLE ExistingCompletionPort, // handle to I/O completion port
      ULONG_PTR CompletionKey, // completion key
      DWORD NumberOfConcurrentThreads // number of threads to execute concurrently
    );
    我们使用时:
    HANDLE m_hIOCompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0 ); 
    最后一个参数NumberOfConcurrentThreads 当前线程执行个数,当为0时,每个处理器上只运行一个线程了。如果当前CUP是双核的,
    那么只能允许两个线程同时执行,避免CPU线程之间的却换带来的性能影响。虽然是这么多,但一般是 CPU核心数量*2 比较合适。可以
    充分利用CPU资源。
    参考:
    http://blog.csdn.net/piggyxp/article/details/6922277
     
  • 相关阅读:
    这是一棵树吗
    感染者
    es6 语法
    css3 flex 详解,可以实现div内容水平垂直居中
    移动端实现复制内容至剪贴板小例子
    jq+mui 阻止事件冒泡
    移动端H5 判断IOS还是Android 平台
    移动端布局 rem,和px
    关于H5移动端开发 iPhone X适配
    H5 微信公众号 监听返回事件
  • 原文地址:https://www.cnblogs.com/bizhu/p/4101203.html
Copyright © 2011-2022 走看看