複製鏈接
請複製以下鏈接發送給好友

TMS

(維護觸發器消息池)

鎖定
Trigger Management System,也叫觸發管理系統,它提供了註冊、刪除、更新、分發觸發器消息的方法。
中文名
觸發管理系統
外文名
TMS
Trigger Management System,過濾然後分發觸發器消息的類。它提供了註冊、刪除、更新、分發觸發器消息的方法。
(1)觸發器消息結構定義
根據Agent之間通信的需要,定義了包含發送、接受ID、消息類型、附加變量在內的結構體。附加變量主要包括最新速度、通用布爾變量、Agent分組信息等內容。
(2)註冊觸發器消息
消息能夠通過TMS提供的註冊函數RegisterMessge()註冊到系統中。TMS負責創建一個新的觸發器消息並且設置其屬性,完成後會將消息實例的指針返回,將消息壓人消息池。
(3)刪除觸發器消息
當消息失效後,Agent調用TMS提供的刪除函數RemoveMessage()刪除消息池中的無用消息。
(4)更新觸發器消息
觸發器消息系統的核心是Update()函數。這個函數可以刪除過期的觸發器消息,刷新動態位置的觸發器消息,並通知與某個觸發器消息有關的所有智能體。Update()函數在每個時鐘週期內均會被調用一次。
(5) TMS負責維護的觸發器消息池
Agent message在TMS註冊後,壓入消息池(TMS MessagePool)進行保存。為了提高查找效率,消息池會按照消息類型對Message進行分組管理。
(6)觸發器消息分發模塊
觸發器消息分發模塊是TMS中較為獨立的一個部分,它負責過濾消息和建立Agent和該Agent獨有消息的映射表。是保證Multi-Agent進行高效通信與事件同步的基礎。
系統在每個運算週期中均會調用觸發器消息類中消息分發函數DistributeMessage()來分發消息池中的消息,創建消息映射表,提高Agent獲得消息的速度,進而確保系統的實時性。DistributeMessage()函數首先獲取消息池中的消息,然後根據消息的接收ID將消息壓入消息映射表中。各個Agent在下個運算週期中訪問相應的消息映射表,取出消息從而進行操作。
消息的分發實現了每個Agent只要對它感興趣的事件Event做出反應即可,同時兩個運算週期的配合也保證了系統的實時性。
(7) TMS分發消息後產生的Agent對應消息映射表
為了避免輪詢,從而進一步提高效率設計了這個映射表。每個Agent ID對應一組經過分發模塊檢測後生成的消息指針。Agent對象只需要根據自己的類型和ID查詢該表就可以快速的得到自己在新的時鐘週期所應處理的消息。
(8)觸發器的邏輯概念
觸發器( Trigger ) 是負責觸發器消息產生的邏輯運算機,當滿足了觸發條件時, Agent就會產生並註冊觸發器消息。