继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第10天 C气象数据中心 13-12 线程池的监控

一点积分
关注TA
已关注
手记 29
粉丝 6
获赞 2
  • 课程信息

课程名称:C/C++气象数据中心实战,手把手教你做工业级项目

课程章节:13-11 线程池的实现

主讲老师: 吴从周

  • 课程内容

线程池的监控

进程程序:守护进程+调度进程+心跳机制;
线程程序:守护(监控)线程+心跳机制;
使用守护线程检查工作线程的心跳时间,如果超时,先取消再启动。

  • 课程收获
    稳定性的问题需要考虑到,虽然现在线程总线的 工作量不大,在实际使用过程中不容易出现程序挂死的现象,但是我们需要未雨绸缪,考虑到后续的吞吐量过大后,流程和功能更加复杂之后,就不一定会出现问题,所以需要加入线程监控。

1.在服务总线的服务端程序中加入线程的心跳信息。
图片描述

gettimeofdate(&now ,NULL);取当前时间放入now中

struct timeval now;gettimeofday (&now, NULL);//获取当前时间。
now. tv_sec=now.tv_sec+20;//取20秒之后的时间。
pthread_cond_timedwait (&cond, &mutex, (struct timespec*)&now);//等待条件被触发。 超时就返回。

2.监控线程

定义一个死循环,每隔3s左右检查一次,再套一个循环去遍历工作线程ID的容器,工作线程的超时时间为20s ,采用20以上的时间判断超时即可。
注意,建立监控线程之后,需要在线程退出子函数中增加取消监控线程的子代码。

图片描述

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP