使用定时器实现线程控制
2014-03-28 14:52
337 查看
2014年3月28日14:47:52
使用定时器实现线程控制
1、定时器部分
2、线程函数
3、线程控制函数
使用定时器实现线程控制
1、定时器部分
m_StnCltCtl.initial(); m_StnCltCtl.checkThread(); SetTimer(TIMER_ID_STATION_COLLECT,TIMER_TIME_STATION_COLLECT,NULL); void CCenterTransDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 switch(nIDEvent) { case TIMER_ID_STATION_COLLECT: m_StnCltCtl.checkThread(); break; default: break; } CDialog::OnTimer(nIDEvent); }
2、线程函数
DWORD WINAPI FWorkThread(void *pVoid) { StationClollectThreadPara *pPara = (StationClollectThreadPara *)pVoid; CString sInfo; sInfo.Format(_T("线程开始,站ID:%d"),pPara->m_nStationID); DBG_tWriteLogFile(LOG_DEBUG,sInfo); for(int i = 0;i<100;i++) { pPara->m_bNormal = true; Sleep(15*1000); sInfo.Format(_T("线程运行,站ID:%d"),pPara->m_nStationID); DBG_tWriteLogFile(LOG_DEBUG,sInfo); } pPara->m_bAlive = false; sInfo.Format(_T("线程结束,站ID:%d"),pPara->m_nStationID); DBG_tWriteLogFile(LOG_DEBUG,sInfo); return TRUE; }
3、线程控制函数
bool CStationClollectController::initial() { StationClollectThreadPara aPara; aPara.m_bUse = false; aPara.m_bAlive = false; aPara.m_bNormal = false; aPara.m_nStationID = 0; for(int i = 0;i<m_nThreadMaxNum;i++) { m_listThreadPara.push_back(aPara); } return true; } bool CStationClollectController::checkThread() { list<StationClollectThreadPara>::iterator it = m_listThreadPara.begin(); for(;it != m_listThreadPara.end();it++) { if((it->m_bUse)&&(!it->m_bAlive)) { it->m_bUse = false; } if((it->m_bUse)&&(it->m_bAlive)) { if(it->m_bNormal) { it->m_bNormal = false; } else { //进程自杀 CString sInfo; sInfo.Format(_T("线程有问题,进程自杀")); DBG_AfxMessageBox(sInfo); ExitProcess(0); return false; } } if(!it->m_bUse) { it->m_bUse = true; it->m_bAlive = true; it->m_bNormal = true; it->m_nStationID = g_nStationID; g_nStationID ++; HANDLE hThread = CreateThread(NULL,0,FWorkThread,&(*it),0,NULL); CloseHandle(hThread); } } return true; }
相关文章推荐
- java线程之间的控制,使用Semaphore 实现 互斥
- Android使用handler实现简单的定时器,主线程每秒刷新UI
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- JavaSE使用socket与线程实现控制台版的聊天室功能
- android 中native层使用线程实现定时器功能
- java中使用线程实现Timer(定时器)原理和源码
- Java多线程学习笔记1——线程的实现方式以及定时器的使用
- 线程池,封装使用,实现控制子线程
- 多线程---使用ManualResetEvent来控制线程间的同步(实现了消费者和生产者模式)
- java中使用线程实现Timer(定时器)原理和源码
- 方法一、使用Handler和Thread(线程)实现定时器
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码
- java中使用线程实现Timer(定时器)原理和源码