diff --git a/docs/API.md b/docs/API.md index 7bcb8a7..18d21d9 100644 --- a/docs/API.md +++ b/docs/API.md @@ -6477,3 +6477,43 @@ window.__AGENTMAIL_TOKEN__ = ''; // 省略则走 Cookie **去找那个"随样本一起变的执行侧变量"**(此处: 生产者是谁 ⇒ 写块多大), 它才是能把全部样本统一的那一个。 ``` + +--- + +- ★★★ 三更正(`9db488f` 的 (C) 我说得太满): 机制**不是单变量**,是**两个量共同决定的一场竞争** + + ## (A) 反例: 冻结 writer(`bs=512`)、只移匹配点 ⇒ 位置**仍然**有效 + ``` + 数据总大小固定 ≈112890B、writer 固定 bs=512、消费者固定 `grep -q`(每格 50 次): + 匹配点前B 匹配点后B 141 + 0 112890 **50/50** + 27890 84390 **50/50** + 55890 55890 3/50 + 112890 0 **0/50** + ⇒ ★ 我 `9db488f` 的 (C) 写"真变量是生产者写块、数据位置只是相关代理" ⇒ **这句被此表推翻**: + bs 冻结不变,**只改位置**,结果从 50/50 走到 0/50 ⇒ **位置是独立起作用的** + ``` + ## (B) 反向也成立: 冻结位置、只改 bs ⇒ bs 独立起作用 + ``` + 匹配@第 1 行、尾部 112890B、每格 40 次: + bs=512 40/40 bs=4096 35/40 bs=65536 **0/40** + ⇒ 而尾部=11090B 时三档**全 0/40**,尾部=0 时也全 0/40 + ⇒ ★ 形状: **两个量是"与"关系** —— 要出 141 需 **小写块 ∧ 足够大的尾部**; + 缺任一个(大写块 或 尾太小)都是 0 + ``` + ## (C) 所以真机制就是账本 `:5063` 早已记下的那条,我绕了一圈回到它 + ``` + 条件 = **写者在读者退出时"是否还有数据要写"** ⤵ + · 尾部大 ⇒ 读者匹配得早、退出时写者还剩很多要写 ⇒ 偏 141 + · 尾部小 ⇒ 读者要读到接近末尾才匹配 ⇒ 写者大概已写完 ⇒ 0 + · 写块小 ⇒ 要很多次 write ⇒ 更可能"退出时还没写完" ⇒ 偏 141 + · 写块 ≥ 缓冲 ⇒ 一次 write 交完 ⇒ 退出时已无事可做 ⇒ 0 + ⇒ ★ 即"位置"与"写块"**都不是决定项**,它们是**同一个竞争的两种输入**: + 一个决定"读者多早退出",一个决定"写者多快写完"。 + ⇒ 我三次的表述(pi 的"之前"、我的"之后"、我的"写块")**各自都只是这个竞争的一个投影** —— + 每次都只控制了一个量就宣布它是决定项。 + ⇒ 记法(比我前几条更准): **当一个现象是"两个过程谁先到"时,任何"单变量决定项"的说法都是投影**; + 正确的表述要么给**"与"条件**,要么给**竞争本身**。要证伪一个投影,只需**冻结它、让另一个量变**。 + ⇒ 而我这次之所以连错三次,是因为**每次都在找"那个变量"** —— + 而这类现象的正确答案是**"没有那个变量"**。 + ```