示例#1
0
void ServerThread::run( )
{
	g_pLog->log_debug("%u,%u,ServerThread::run(),ThreadID %d",0,0,getTID());
	g_pServerManager->m_ThreadID = getTID( );

	while(IsActive() )
	{
		if(g_pServerManager)
		{
			MySleep(100);
			bool ret = g_pServerManager->Tick( );
			Assert( ret );
		}
	}
}
示例#2
0
VOID LoginDBManager::run()
{
    __ENTER_FUNCTION
    
      printf("run db Thread \r\n");
        
       UINT uTime = g_pTimeManager->CurrentTime();
        
        g_DBLogicManager.m_ThreadID    = getTID();

        while (IsActive())
        {
            MySleep(100);

            if(!mCharDBInterface->IsConnected())
            {
                BOOL bRet =    mCharDBInterface->Connect();
                if(!bRet)
                {
                    Log::SaveLog("./Log/Login.log","mCharDBInterface->Connect() Get Errors: %s",mCharDBInterface->GetErrorMsg());
                    MySleep(5000);//保证不频繁连接数据库
                }
                else
                    Log::SaveLog("./Log/Login.log","Reconnect database");
                
            }

            g_DBLogicManager.HeartBeat(uTime);
        }

        printf("end db Thread \r\n");

        __LEAVE_FUNCTION
}
示例#3
0
unsigned int* ThreadLocalRand::getSeed() {
  unsigned int* p = seed_.get(false /*createLocal*/);
  if (!p) {  // init seed
    if (FLAGS_thread_local_rand_use_global_seed) {
      p = new unsigned int(defaultSeed_);
    } else if (getpid() == getTID()) {  // main thread
      // deterministic, but differs from global srand()
      p = new unsigned int(defaultSeed_ - 1);
    } else {
      p = new unsigned int(defaultSeed_ + getTID());
      VLOG(3) << "thread use undeterministic rand seed:" << *p;
    }
    seed_.set(p);
  }
  return p;
}
示例#4
0
std::default_random_engine& ThreadLocalRandomEngine::get() {
  auto engine = engine_.get(false);
  if (!engine) {
    engine = new std::default_random_engine;
    int defaultSeed = ThreadLocalRand::getDefaultSeed();
    engine->seed(FLAGS_thread_local_rand_use_global_seed
                     ? defaultSeed
                     : defaultSeed + getTID());
    engine_.set(engine);
  }
  return *engine;
}
示例#5
0
StatInfo::~StatInfo() {
  if (stat_) {
    std::lock_guard<std::mutex> guard(stat_->lock_);
    if (stat_->destructStat_.max_ < this->max_) {
      stat_->destructStat_.max_ = this->max_;
    }
    if (stat_->destructStat_.min_ > this->min_) {
      stat_->destructStat_.min_ = this->min_;
    }
    stat_->destructStat_.total_ += this->total_;
    stat_->destructStat_.count_ += this->count_;
    stat_->threadLocalBuf_.remove({this, getTID()});
  }
}
示例#6
0
void Stat::addSample(uint64_t value) {
  StatInfo* statInfo = statInfo_.get(false);
  if (!statInfo) {
    statInfo = new StatInfo(this);
    statInfo_.set(statInfo);
    std::lock_guard<std::mutex> guard(lock_);
    threadLocalBuf_.push_back({statInfo, getTID()});
  }
  if (value > statInfo->max_) {
    statInfo->max_ = value;
  }
  if (value < statInfo->min_) {
    statInfo->min_ = value;
  }
  statInfo->total_ += value;
  statInfo->count_++;
}
示例#7
0
VOID SceneThread::run()
{
    __ENTER_FUNCTION
        
        INT i ;

        TID cTid = getTID() ;
        for ( i = 0; i < m_nSceneCount; i++ )
        {
            m_apScene[i]->m_ThreadID = cTid ;
        }

        if ( 0 == m_nSceneCount )
        {
            Log::SaveLog( SERVER_LOGFILE, "SceneThread:: no scene add! TID: %d", cTid ) ;
            return ;
        }

        _MY_TRY
        {

            for ( i = 0; i < m_nSceneCount; i++ )
            {
                Log::SaveLog( SERVER_LOGFILE, "SceneThread::run() TID: %d SID: %d SName: %s...", 
                    cTid, m_apScene[i]->SceneID(), g_pSceneManager->GetSceneInfo( m_apScene[i]->SceneID() )->m_szName ) ;
            }

            while ( IsActive() )
            {
                for ( i = 0; i < m_nSceneCount; i++ )
                {
                    BOOL ret = m_apScene[i]->Tick() ;
                    Assert( ret ) ;
                }
            }
        }
        _MY_CATCH
        {
            SaveCodeLog() ;
        }

        Quit() ;

    __LEAVE_FUNCTION
}
示例#8
0
BOOL	DBThread::ProcessCacheCommand()
{
    PlayerID_t PlayerID ;

    _MY_TRY
    {
        BOOL ret = FALSE ;

        Packet* pPacket = NULL ;


        ret = RecvPacket( pPacket, PlayerID);


        if( !ret )
            return TRUE ;

        Player* pPlayer = g_pPlayerPool->GetPlayer( PlayerID ) ;
        if( pPlayer )
        {
            pPacket->Execute(pPlayer) ;
        }
        else
        {
            pPacket->Execute(NULL);
        }

        g_pPacketFactoryManager->RemovePacket( pPacket ) ;

        return TRUE;
    }

    _MY_CATCH
    {
        g_pLog->FastSaveLog(LOG_FILE_0,"DBThread::ProcessCacheCommand Get Errors,TID=%d,PlayerID =%d",getTID(),PlayerID);
        return TRUE;
    }


}