博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用定时器实现线程控制
阅读量:4045 次
发布时间:2019-05-24

本文共 1741 字,大约阅读时间需要 5 分钟。

2014年3月28日14:47:52

使用定时器实现线程控制

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
::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;}

转载地址:http://vjwci.baihongyu.com/

你可能感兴趣的文章
qt5 everywhere编译完成后,找不到qmake
查看>>
qt 创建异形窗体
查看>>
可重入函数与不可重入函数
查看>>
简单Linux C线程池
查看>>
内存池
查看>>
输入设备节点自动生成
查看>>
GNU hello代码分析
查看>>
Qt继电器控制板代码
查看>>
wpa_supplicant控制脚本
查看>>
gstreamer相关工具集合
查看>>
RS232 四入四出模块控制代码
查看>>
gstreamer插件之 videotestsrc
查看>>
linux 驱动开发 头文件
查看>>
/etc/resolv.conf
查看>>
container_of()传入结构体中的成员,返回该结构体的首地址
查看>>
linux sfdisk partition
查看>>
ipconfig,ifconfig,iwconfig
查看>>
opensuse12.2 PL2303 minicom
查看>>
网络视频服务器移植
查看>>
Encoding Schemes
查看>>