目录 / 文档-技术白皮书 / 07-EFT.WP.Core.Threads v1.0
I. 范围与对象
- 本章给出并发域的基元、命名与状态机:thr、pid_thr、gid、eid、chan、sem、hb、tau_mono/ts 与资源提示 R_cpu/R_mem/R_io。
- 统一线程模型覆盖 OS thread、green thread、actor 与协程;凡可独立调度与观测的执行单元一律归类为 thr。
- 所有符号与公式采用英文与纯文本,内联以反引号包裹;跨卷锚点与编号遵循总卷约定。
II. 基本对象与标识
- 线程与执行单元
- thr:执行单元;pid_thr:线程唯一标识;state ∈ {"new","ready","running","blocked","done","canceled"}。
- 属性:affinity(cpu 亲和)、prio(优先级)、K_thr(并发上限)。
- 执行图与依赖
G = (V,E);dep(u,v);关键路径 crit(G);w(v)、c(e);makespan T_make(G)。 - 消息与通道
chan(channel);q_len、cap、bp;msg、ack;idemp_key。 - 时序与一致性
tau_mono(单调时钟);ts(UTC 墙钟);hb(happens-before);deadline、timeout、cancel_token。 - 速率与时延(排队论)
lambda、mu、rho = lambda / mu;L、L_q、W、W_q;Little 定律 L = lambda * W。
III. 状态机与生命周期
- 状态集合:state ∈ {"new","ready","running","blocked","done","canceled"}。
- 允许转移(最小闭包):
- new -> ready -> running -> done
- running -> blocked -> ready
- any_active -> canceled
- 基本时延分解:
- W = W_q + W_run,其中 W_q 由排队与资源竞争引起,W_run 为实际执行时间。
- 迟到度量:lateness = max(0, ts_finish - deadline);软超时校准以 tau_mono 评估。
- 因果关系:
若 hb(e1,e2) 成立,则记录 eid 序关:seq(e1) < seq(e2);乱序场景需以去重与幂等弥补。
IV. 命名规范与编码方案(TS.*)
- 统一命名前缀:TS. 用于线程域对象与度量之语义编码。
- 结构化命名:<prefix>.<domain>.<kind>.<name>[.attr...],其中 <domain> ∈ {"core","svc","job","batch"}。
- 标识与主键:
- TS.pid_thr:线程标识。格式 ns:base36(ts_ns)+"-"+rand62(8);唯一性公设见 P71-2。
- TS.gid:执行图标识。格式 ns:graph-"+hash_sha256(spec)[0:12]。
- TS.eid:事件标识。格式 pid_thr+"#"+seq64;同一 pid_thr 下单调递增。
- 通道与消息:
- TS.chan.name:通道名(全局唯一);TS.chan.mode ∈ {"mpmc","mpsc","spmc","spsc"}。
- TS.msg.key:idemp_key;TS.msg.sem ∈ {"at_most_once","at_least_once","exactly_once*"}。
- 属性与资源:
TS.thr.affinity、TS.thr.prio、TS.thr.quota.cpu、TS.thr.quota.mem、TS.thr.quota.io。 - 度量与观测:
TS.sli.latency_ms、TS.sli.queue_time_ms、TS.sli.run_time_ms、TS.sli.qps、TS.sli.err_rate、TS.sli.p99_ms。 - 语义标签(统一 tag 键):
svc、comp、op、gid、pid_thr、chan、sem、region、zone、version、schema_version。 - 例表(首批纳入 20 项):
- TS.pid_thr、TS.gid、TS.eid、TS.chan.name、TS.chan.mode、TS.chan.cap
- TS.msg.key、TS.msg.sem、TS.retry.count、TS.timeout.ms
- TS.thr.affinity、TS.thr.prio、TS.thr.K_thr、TS.thr.state
- TS.sli.latency_ms、TS.sli.queue_time_ms、TS.sli.run_time_ms、TS.sli.err_rate
- TS.sli.p99_ms、TS.sli.qps
V. 公设与约束(P71-*)
- 公设 P71-1(时钟一致):所有时延、抖动与超时以 tau_mono 计量;对外发布以 ts 记录。
- 公设 P71-2(标识唯一):∀ pid_thr_i ≠ pid_thr_j : pid_thr_i ≠ pid_thr_j;eid 于给定 pid_thr 下严格单调。
- 公设 P71-3(稳定性优先):任一服务站稳态运行需满足 rho < 1;若不成立,必须配置 bp 策略与限流。
- 公设 P71-4(幂等闭环):跨进程交互默认 sem="at_least_once";消费者必须以 idemp_key 与窗口 Delta_t_dedup 达成 exactly_once*。
- 公设 P71-5(资源可预算):进入 G 前声明 R_cpu/R_mem/R_io 上界或区间,调度不得突破 quota。
- 公设 P71-6(观测必要):每个 thr/chan 至少上报 TS.sli.queue_time_ms、TS.sli.run_time_ms、TS.sli.err_rate,并可聚合为 SLO。
VI. 线程属性与调度提示
- 并发上限:K_thr 描述同类任务的最大并发槽;与限流器独立但必须协同。
- 亲和与优先:affinity 映射至 CPU 集;prio 以整数刻度,范围与平台绑定由实现文档定义。
- 资源配额:quota = {"cpu": R_cpu, "mem": R_mem, "io": R_io};超额行为为 throttle 或 preempt,不得静默丢弃。
VII. 消息交互与投递语义
- 通道容量与背压:
cap 为硬上限;bp = f(q_len, cap, W_q) 单调递增;达到阈值触发 drop、delay 或 shed。 - 投递语义:
sem="at_most_once":允许丢失不重投;sem="at_least_once":允许重复需去重;sem="exactly_once*":通过 idemp_key 与日志实现的最佳努力。 - 幂等约束:
幂等函数满足 f(x; idemp_key) = f(x; idemp_key);去重窗口 Delta_t_dedup 必声明。
VIII. 度量字段与聚合窗口
- 延时族:TS.sli.queue_time_ms、TS.sli.run_time_ms、TS.sli.latency_ms = queue_time_ms + run_time_ms。
- 可靠性族:TS.sli.err_rate ∈ [0,1]、TS.retry.count、TS.drop.count、TS.timeout.count。
- 吞吐族:TS.sli.qps、TS.sli.backlog = q_len。
- 分位族:TS.sli.p50_ms、TS.sli.p95_ms、TS.sli.p99_ms(基于 SLA_window 聚合)。
- 量纲校核:unit(latency_ms)="ms"、dim(latency_ms)="T";unit(qps)="1/s"、dim(qps)="T^-1";check_dim( L - lambda * W ) = 0。
IX. 兼容性与跨卷引用
- 与《Core.DataSpec》:线程度量、追踪与日志作为 D 的 R 写入,manifest 记录 schema_version 与 Trace。
- 与《Core.Equations》《能量丝》两口径引用(用于时间校准或传播延迟建模):
- 常量外提:T_arr = ( 1 / c_ref ) * ( ∫ n_eff d ell )
- 一般口径:T_arr = ( ∫ ( n_eff / c_ref ) d ell )
- 差异衡量:delta_form = | ( 1 / c_ref ) * ( ∫ n_eff d ell ) - ( ∫ ( n_eff / c_ref ) d ell ) |。
- 冲突名强制:T_fil 与 T_trans 不可混用;n 与 n_eff 严格区分;使用 gamma(ell) 与 d ell 明确路径与测度。
X. TS. 编码卡片(示例与校验)*
- TS.pid_thr
- 定义:线程全局唯一标识。
- 形制:ns:base36(ts_ns)+"-"+rand62(8);示例 svcA:kr3t9z2s-1B9xYpQZ。
- 约束:唯一(P71-2);ns 采用小写字母与短横线。
- TS.eid
- 定义:事件标识(线程内单调)。
- 形制:pid_thr+"#"+seq64;示例 svcA:...#0000000F。
- 约束:同一 pid_thr 下严格递增(P71-2)。
- TS.gid
- 定义:执行图标识。
- 形制:ns:graph-"+hash_sha256(spec)[0:12]。
- 约束:跨发布版本稳定,spec 变更导致 gid 变更。
- TS.chan.name
- 定义:通道名。
- 形制:ns.comp.op;示例 svcA.ingest.parse。
- 约束:全局唯一;mode、cap 必配。
- TS.msg.sem
- 定义:投递语义。
- 取值:"at_most_once"|"at_least_once"|"exactly_once*"。
- 约束:与去重策略一致(P71-4)。
- TS.sli.latency_ms
- 定义:端到端延时。
- 形制:数值型;单位 ms;窗口 SLA_window 聚合 p50/p95/p99。
- 校核:latency_ms = queue_time_ms + run_time_ms(容差内相等)。
- TS.thr.quota.*
- 定义:资源配额。
- 形制:cpu(核)、mem(字节或单位后缀)、io(MB/s)。
- 约束:不得突破(P71-5)。
XI. 最小校验清单(落地 Mx-1 片段)
- 标识校验
validate_unique(TS.pid_thr);validate_monotonic(TS.eid per pid_thr)。 - 稳定性校验
assert rho < 1 或生成 bp 策略建议。 - 幂等与窗口
require idemp_key when sem!="at_most_once";Delta_t_dedup 明确并落库。 - 量纲与守恒
check_dim( L - lambda * W ) = 0;unit(latency_ms)="ms"。
XII. 术语冲突清单(执行与计量交叉)
- T_fil vs T_trans:前者仅用于张力;后者仅用于透射系数。
- n vs n_eff:数密度与有效折射率不可替换;凡出现 T_arr 必使用 n_eff。
- 路径与测度:凡出现积分,必须写作 gamma(ell) 与 d ell,并声明 L_gamma = ( ∫ 1 d ell )。
XIII. 小结与出厂条件
- 线程域对象以 TS.* 统一命名,标识与度量满足 P71-*;状态机与语义闭环于 thr/chan/sem/hb。
- 满足以下条件方可进入第2章调度设计:
- 已定义 TS.pid_thr/TS.gid/TS.eid/TS.chan.* 且通过唯一与单调校验。
- 已声明 quota 与 K_thr 并通过资源预算校核。
- 已完成 SLI 字段映射与 SLA_window 聚合策略。
版权与许可(CC BY 4.0)
版权声明:除另有说明外,《能量丝理论》(含文本、图表、插图、符号与公式)的著作权由作者(“屠广林”先生)享有。
许可方式:本作品采用 Creative Commons 署名 4.0 国际许可协议(CC BY 4.0)进行许可;在注明作者与来源的前提下,允许为商业或非商业目的进行复制、转载、节选、改编与再分发。
署名格式(建议):作者:“屠广林”;作品:《能量丝理论》;来源:energyfilament.org;许可证:CC BY 4.0。
首次发布: 2025-11-11|当前版本:v5.1
协议链接:https://creativecommons.org/licenses/by/4.0/