博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程看门狗
阅读量:4044 次
发布时间:2019-05-24

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

本模块维护开启的工作线程。如果判断该线程不能正常工作,则工作进程自杀重启。

1、使用VS2008创建一个带预编译头的控制台项目。

2、源文件中的内容:

#include "stdafx.h"  #include 
#include
using namespace std; struct SThreadPara{ bool m_bAlive; HANDLE m_hThread;};DWORD WINAPI FWorkThread(void *pVoid){ printf("线程开始\n"); SThreadPara *pPara = (SThreadPara *)pVoid; while(1) { pPara->m_bAlive = true; Sleep(/*1*/6); } return TRUE;}int main( void ) { char ch; SThreadPara aPara; aPara.m_bAlive = false; aPara.m_hThread = NULL; aPara.m_hThread = CreateThread(NULL,0,FWorkThread,&aPara,0,NULL); if(NULL == aPara.m_hThread) { printf("创建线程失败\n"); return 1; } printf("创建线程成功\n"); while(1) { Sleep(3); if(!aPara.m_bAlive) { //直接进程自杀好了。 printf("线程有问题,进程自杀\n"); cin>>ch; ExitProcess(0); return 1; /*if(!TerminateThread(aPara.m_hThread,0)) { printf("终结线程失败\n"); return 1; } CloseHandle(aPara.m_hThread); aPara.m_hThread = NULL; printf("终结线程成功\n"); cin>>ch; aPara.m_bAlive = false; aPara.m_hThread = NULL; aPara.m_hThread = CreateThread(NULL,0,FWorkThread,&aPara,0,NULL); if(NULL == aPara.m_hThread) { printf("创建线程失败\n"); return 1; } printf("创建线程成功\n");*/ } else { aPara.m_bAlive = false; } } cin>>ch; return 0; }

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

你可能感兴趣的文章
浏览器端的缓存规则
查看>>
redis持久化RDB和AOF
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>
redis sharding方案
查看>>
程序员最核心的竞争力是什么?
查看>>
阿里、网易、滴滴共十次前端面试碰到的问题
查看>>
memcache、redis原理对比
查看>>
Node.js机制及原理理解初步
查看>>
linux CPU个数查看
查看>>
linux系统负载load average的含义
查看>>
分布式应用开发相关的面试题收集
查看>>
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>
利用HTTP Cache来优化网站
查看>>
利用负载均衡优化和加速HTTP应用
查看>>
消息队列设计精要
查看>>
高可用性系统在大众点评的实践与经验
查看>>
美团酒店Node全栈开发实践
查看>>
分布式缓存负载均衡负载均衡的缓存处理:虚拟节点对一致性hash的改进
查看>>