设计取舍
前面各部分按类型读,每一页讲清一个机制。这一部分换个角度:把散在各页里的取舍收拢起来,按「选了什么、换来了什么、付出了什么、代价由谁来补」排好。机制不重讲,每条都链回讲过它的那一页。
- 取舍汇总:七个决定。包 waker 而不改调度器(实测单线程每次 poll 多 75–125ns,12 个线程共用一个 monitor 时约 3.3µs);写方只累加、读方做差,区间最大空闲是例外;运行时只读 tokio 的计数器,口径跟着 tokio 走;不稳定字段用 cfg 删掉;
TaskMonitorCore与FutureMonitor两个变体;metrics-rs 的导出口径写死在宏里;与 tokio-console 的分工。
flowchart TB w["包 waker"] --> a["只累加"] a --> r["运行时只读"] r --> c["cfg 删字段"] c --> v["两个变体"] v --> e["导出口径"] e --> k["与 console 分工"]
💬 关联讨论
发起讨论加载中...