关于 principle-separate-before-serializing-shared-state
面向多方可能修改共享状态的并发设计技能。它建议先消除不必要的共享;确需共享写入时,再以结构化方式串行处理。
主要功能
- 01识别共享可变状态
- 02优先拆分写入目标
- 03串行化必要的共享写入
- 04降低竞态风险
适用场景
- 01设计并发工作进程的状态
- 02避免共享文件或分支中的竞态
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ cursor/ plugins --skill principle-separate-before-serializing-shared-state安装后在 Claude Code 中输入/principle-separate-before-serializing-shared-state确认已加载。
详细介绍
在序列化共享状态之前先消除共享
当并发参与者可能共享可变状态时,首先要问他们是否需要同一个可变对象。如果不需要,就消除共享。如果确实需要共享,就通过结构化方式强制串行化:锁文件、顺序执行的阶段、独占所有权。指令和约定不能控制并发。
原因: 对共享状态的并发写入会产生竞态条件,问题时有时无、难以复现,调试成本也很高。
模式:
- 识别共享的可变状态(双方都会读写的文件、双方都会推送到的分支、双方都会定义并使用的 API)。
- 默认做法:消除共享写入目标。 问问自己:这些参与者需要的是一个规范对象,还是在发布彼此独立的信息?为每个参与者分配各自拥有的文件、键、分支或状态目录,只在读取或报告的边界处合并。两个工作进程将各自的
lastX字段写入同一个state.json,仍然属于共享修改。indexer-state.json+metrics-state.json则不属于共享修改。 - 只有当一个共享写入目标确实是不可违背的约束时,才以结构化方式串行化访问(锁文件、顺序执行的阶段、单写入者参与者或原子比较并交换)。把“我们需要一把锁”视为需要检查的设计异味,而不是默认答案。
评论
支持 Markdown