ruanwenzhong

0 功能函数

    0.1 socket工厂 (创建socket,绑定完成端口CreateIoCompletionPort)

-------------------------------------------------主线程-----------------------------------------------

1.初始化

    1.1 创建一个完成端口

    1.2 创建线程池

2.创建绑定socket

    2.1 调用0.1   (创建ListenSocket)

    2.3 绑定端口

3.设置为被动或主动

    3.1 listen

    3.2 获得AcceptEx指针

    3.3 调用0.1(创建AcceptSocket)

    3.4 调用AcceptEx(根据设置确定初始投递多少个),设置第三个参数为0

4.while(1){

5.执行某种阻塞调用

    5.1 调用WSAEventSelect,监听FD_ACCEPT事件(监听到时,在总AcceptEx 请求小于设置的最大值的情况下,投递一个新的AcceptEx请求),并设置一个超时(可配置的),超时的话,检查当前活动线程数,看是否要创建一个新的工作者线程(创建新的线程不会使总线程数超过设置的最大值)

如下:

WSAEventSelect();

if(超时||time_last-time()>超时值) {

检查当前活动线程数,接近总线程数时创建一个新的工作者线程

调用用户提供的回调函数,满足用户的定时需求(这个定时是一个不稳定的定时[t,2t))。

time_last=time();

}

if(FD_ACCEPT){

执行0.1,投递一个AcceptEx

}

当接收到关闭信号时,向工作者线程投递关闭信号

 

--------------------------------------------工作者线程-----------------------------------------------

1. 一些初始化

2.while(1){

GetQueuedCompletionStatus

当接收到AcceptEx完成包时,投递一个新的AcceptEx请求

当接收到Read完成包时,………………

}

分类:

技术点:

相关文章:

  • 2021-11-22
  • 2021-06-07
  • 2021-10-18
  • 2021-05-14
  • 2021-09-25
  • 2021-12-08
  • 2021-12-28
  • 2021-04-01
猜你喜欢
  • 2021-11-04
  • 2021-09-18
  • 2021-08-27
  • 2021-08-07
  • 2021-06-19
  • 2021-11-13
  • 2021-09-27
相关资源
相似解决方案