唤醒 · 双排期实现方式与「状态 → 动作」
唤醒 = 到点由宿主起一个
新会话
(⛔ 不是叫醒旧会话——旧会话的网关口随进程消失);两条每小时排期相位错开 30 分钟;互斥靠同一条域锁。
唤醒触发链与状态动作分流
两条错开半小时的每小时排期各起一个新会话;新会话跑状态并抢域锁,抢不到即退出;抢到后按有缺口、卡在用户、无缺口、判不准四种状态分别动作。
两条每小时排期,相位错开 30 分钟
A :04 | B :34 | 实际每 30 分钟一次唤醒
宿主起一个「全新会话」
新进程 = 新网关口(⛔ 不是叫醒旧的)
第 0 步:跑状态 → 抢域锁
抢不到 ⇒ 立即结束(有人正在推进=天然去抖)
① 有缺口
写一行排期接棒
(id 只取返回值)
② 卡在用户
⛔ 不派棒
只报告"要你做什么"
③ 无缺口
⛔ 不造活、不巡检
一句话结束(正常出口)
④ 判不准
按 ③ 处理
宁可空转一轮
抢锁之前就已决定的三条(不占四分支)
· 抢不到锁 ⇒ 立即结束,⛔ 不等待/不接管/不删别人的锁(R9)
· 🔴 从属于目标:下「执行 XXX 目标」口令 ⇒ A 即刻启用 + 隔 30 分钟启用 B;完成或受阻 ⇒ 一起暂停
· 相位漂移(两条不再差约 30 分钟)⇒ 按启用口径重做(全停 → A 即刻 → B 隔 30 分钟)