用途:这是一个纠偏型技能,帮助在编写或审查 bocpy 代码(库、示例、测试)时,用行为导向并发(BOC)而非线程与锁来思考。核心问题不是“需要什么同步原语”,而是“这份工作针对哪个 cown 排序,该 cown 空闲时应运行什么行为”。
主要能力:识别并替换常见反模式,包括轮询循环中的 time.sleep、忙等标志位、threading.Event/Condition/Lock、wait_for_*_version 轮询、Python 原子计数器、Future/Queue.get 取值、time.sleep(0) 让出、线程循环中的 if work_remaining 判断。对应替换为:@when(cown) 按数据排序;@when(a, b, c) 显式多 cown 或 @when(cowns) 列表形式实现扇入/屏障;用前一行为的结果 cown 建立 happens-after;@when() 在有空闲 worker 时运行;行为循环通过在同一 cown 上自调度实现尾递归式分块;用行为自身结果 cown 做单次赋值会合。
使用方式:写同步代码前先自问依赖哪个 cown、谁读取输出、是否在单个行为里循环、是否要轮询或阻塞、是否用了 threading.* 原语。写时已知具体 cown 时优先用 @when(X, Y, Z) 显式形式,动态或同质集合才用 @when([X, Y, Z]) 列表形式,且不要用 * 展开。
适用场景:bocpy 库、示例与测试的编写和审查。
限制:经典同步仅在运行时边界(测试线程 receive 断言、wait() 内部、C 层运行时内部)才正确;用户 Python 代码不应使用。资料未提供安装命令、收费、平台或效果信息。