⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_purifiertimer.cpp

📁 一个完成端口的框架程序
💻 CPP
字号:
//---------------------------------------------------------------------------


#pragma hdrstop

#include "Unit_PurifierTimer.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
//Purifier thread executant,do something timered
/*多媒体定时器回调过程*/
//uTimerID:定时器唯一全局标识号
//dwUser:用户数据结构指针
//uMsg,dw1,dw2:(系统保留未用)
void CALLBACK PurifierTimerProc(UINT uTimerID,
                                UINT uMsg,
                                DWORD_PTR dwUser,
                                DWORD_PTR dw1,
                                DWORD_PTR dw2)
{

   TtcpIOCP *tcpIOCP;

   
   tcpIOCP=(TtcpIOCP *)dwUser;//用户数据结构指针转换为类对象指针

   /*定时复位单位时间流量计数*/
   //定时器可能会重入,同时该值还会由工作线程进行修改,所以使用原子级同步函数进行数据修改
   //修改值后,复位前值,作为单位时间片的采要速率
   tcpIOCP->BytesSentSampSpeed=InterlockedExchange(&(tcpIOCP->BytesSentPerInterval),0);
   tcpIOCP->BytesRecvSampSpeed=InterlockedExchange(&(tcpIOCP->BytesRecvPerInterval),0);

   /*调用定时器接口例程过程,用于完成后期相关的定时类接口*/
   tcpIOCP->InternalOnTimer();

   //防止重入,使用TryEnter检测临界区,若前一例程正在处理相关信息,则离开,否则进一步处理
   /*DWORD WaitResult=WaitForSingleObject(tcpIOCP->EventArray[0],0);
   if(WaitResult!=WAIT_OBJECT_0)
      return;
   try
   {*/
      tcpIOCP->TimedCounter=tcpIOCP->TimedCounter+1;//定时器计数

	  /*每30秒检测一次超时(无I/O动作)的连接及清理回收站*/
	  //if((1>(tcpIOCP->FActiveThreadCount))


	  if((tcpIOCP->TimedCounter>=30)||(tcpIOCP->TuningListenState==LS_CLOSED&&tcpIOCP->TimedCounter>=5))
	  {
		  if((tcpIOCP->TimedCounter>=30)
			&&(tcpIOCP->ExpectThreadCount>tcpIOCP->ThreadCount)
			&&(tcpIOCP->ThreadCount<(long)MAX_THREAD_NUMBER)
			&&(tcpIOCP->FRunningState>LS_SHUTDN)&&tcpIOCP->ValidConnections>tcpIOCP->ThreadCount)
			{
				tcpIOCP->TimedCounter=0;
				tcpIOCP->AddThread();
			}
		  else
		  {
				tcpIOCP->TimedCounter=0;
		  }
		 SetEvent(tcpIOCP->EventArray[0]);

	  }
   /*}
   __finally
   {
	  SetEvent(tcpIOCP->EventArray[0]);
   }*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -