Skynet: monitor线程

skynet: monitor线程

  • 数据结构:skynet_monitor.c
    在这里插入图片描述

  • 创建线程: create_thread(&pid[0], _monitor, m);

  • 工作流程:skynet_start.c
    在这里插入图片描述
    moniter 线程每5秒检测每个工作线程是否能及时处理消息

  • 版本更新:skynet_server.c
    在这里插入图片描述
    在这里插入图片描述

工作线程在派发消息前会触发监视器,使版本号加1;工作线程处理完消息后会再次触发监视器,重置distination为0

  • 版本检测:skynet_monitor.c
    在这里插入图片描述 如果当前版本 不等于检测版本,说明在派发处理新的消息,设置检测版本等于当前版本,等待下一个5秒检测;如果当前版本等于检测版本且destination没有重置零,那么说明处理某条消息超过5秒,可能出现死循环,释放目标服务。