为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
C++
  • 课程信息

课程名称: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以上的时间判断超时即可。
注意,建立监控线程之后,需要在线程退出子函数中增加取消监控线程的子代码。

图片描述

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消