• 完成端口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
     
  • 相关阅读:
    Jmeter之检查点
    Jmeter之集合点
    Jmeter之参数化
    Jmeter组件认识
    Jmeter目录认识
    sts的web工程创建
    Jmeter的BeanShell脚本开发
    Jmeter插件开发
    Appium配置app老是反复安装问题的处理
    eclipse通过git代码的下载和上传
  • 原文地址:https://www.cnblogs.com/bizhu/p/4101203.html
Copyright © 2020-2023  润新知