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秒,可能出現死循環,釋放目標服務。