Bool HsRobot::Run() { m_bRunning = true; for (Int32 i=0;i<m_iCount;i++) { HawkThread* pThread = new HawkThread(hawk_RobotEntityRoutine); pThread->Start(); m_vThreads.push_back(pThread); } while (m_bRunning) { HawkSleep(DEFAULT_SLEEP); } for (Size_t i=0;i<m_vThreads.size();i++) { if (m_vThreads[i]) { m_vThreads[i]->Close(); HAWK_RELEASE(m_vThreads[i]); } } m_vThreads.clear(); return true; }
PVoid hawk_ThreadRoutine(void* pArgs) { HawkThread* pThread = static_cast<HawkThread*>(pArgs); if (pThread) return pThread->RunLoop(); return 0; }
int main(int argc, Char* argv[]) { HawkUtil::Init(); REGISTER_PROTO(ProtoA); REGISTER_PROTO(ProtoB); REGISTER_PROTO(ProtoC); if (argc >= 2) g_IpAddr = argv[1]; if (!g_IpAddr.size()) g_IpAddr = HawkOSOperator::ConsoleInput(); Int32 iCount = 1; if (argc >= 3) iCount = HawkStringUtil::StringToInt<AString>(argv[2]); for (Int32 i=0;i<iCount;i++) { HawkThread* pThread = new HawkThread(hawk_EchoClientRoutine); pThread->Start(); g_Threads.push_back(pThread); HawkSleep(10); } while(HawkOSOperator::WaitKeyboardInput("",false) != 'Q'); g_Running = false; for (Size_t i=0;i<g_Threads.size();i++) { g_Threads[i]->Close(); HAWK_RELEASE(g_Threads[i]); } HawkUtil::Stop(); HawkUtil::Release(); return 0; }