簡短小模式 —— 時間事件發生器模式

需求

大部分程序會有一些須要週期執行的事情,也有一些須要在程序啓動後執行一次的事情。很明顯這類事情和時間有關,由於它們都須要在特定時間發生。這類須要執行的邏輯能夠由時間事件發生器觸發。git

時間事件發生器

時間事件發生器是掛載在虛擬根VirtualRoot上的一個組件,它負責在特定的時間將特定類型的事件發佈到系統總線上去。時間事件發生器會發布的事件有:github

代碼位置多線程

HasBoot1SecondEvent
HasBoot2SecondEvent
HasBoot5SecondEvent
HasBoot10SecondEvent
HasBoot20SecondEvent
HasBoot1MinuteEvent
HasBoot2MinuteEvent
HasBoot5MinuteEvent
HasBoot10MinuteEvent
HasBoot20MinuteEvent
HasBoot50MinuteEvent
HasBoot100MinuteEvent
HasBoot24HourEvent

Per1SecondEvent
Per2SecondEvent
Per5SecondEvent
Per10SecondEvent
Per20SecondEvent
Per1MinuteEvent
Per2MinuteEvent
Per5MinuteEvent
Per10MinuteEvent
Per20MinuteEvent
Per50MinuteEvent
Per100MinuteEvent
Per24HourEvent

以上26種時間事件的設計靈感來源於人民幣幣值的設計,具體爲何是這些數值咱們不作深究,實踐證實這些數值正是開源礦工所須要的。spa

由誰發出這些時間事件?

能夠看出,這類時間事件不屬於任何模塊,它們是由硬件系統的cpu發出的,因此對於咱們的系統來講應該把時間事件發生器放在咱們的系統的虛擬根VirtualRoot上。線程

這些消息發送到什麼地方去?

發佈到系統總線上去。每個系統都應該有本身內部的系統總線,時間事件消息正是發佈到系統本身內部的總線上去的。系統內部的各組件根據本身的需求從總線上訂閱事件修建事件消息所行走的路徑。設計

力:走那條線程驅動這類事件?

若是你的系統是單線程的系統就不存在這個問題了,若是是多線程的系統尤爲是帶界面的系統的話這會是一個問題。根據本身的狀況,這類事件能夠由UI主線程驅動也能夠由非UI線程驅動,值得注意的是若是這個事件發生器由非UI線程驅動的話訂閱這些消息的程序須要到處當心本身的部分邏輯是否須要在UI上執行,若是這個發生器由UI線程驅動的話訂閱這些事件的程序也要到處當心本身的邏輯是否會耗時超過50毫秒。事件

相關文章
相關標籤/搜索