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秒,可能出现死循环,释放目标服务。