只清理本次仍拥有的临时状态
Owner-token terminal cleanup
使用所有权标识确认临时资源由本次操作创建且仍归它管理。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
本次调查取得路径 L 的临时锁,返回 owner-a;后来另一会话将同一路径换成 owner-b。结束时仅知道路径不够,不能删除现在已不归本次操作的状态。教学辅助程序提供原子的 compare-and-release。
具体做法
获取时保留真实返回的所有权令牌和范围,无新令牌说明没有新所有权。完成、中止或终止错误时,用保存令牌调用原子比较释放;匹配才清理,不匹配保留新状态并报告。不要从当前锁文件重新抄令牌,因为那会把别人所有权当自己。
反例
调查结束直接删除 L。或者读取当前 owner-b当成本次令牌释放,把替换锁清掉。
改进写法
保存教学 acquire 返回的 owner-a。结束时用 owner-a 调用 compare-and-release L;当前若为 owner-b,保留并报告所有权已变,不能直接删除路径或重抄令牌。没取得新令牌就没有可清理锁;清理错误保留原状态与错误,按明确恢复流程处理。
为什么这样改
路径复用不保留所有权,返回令牌才绑定本次操作。原子比较与释放避免检查后又被替换的竞态;保持旧令牌防止读取当前状态时误认别人的锁。
如何验证
教学测试 owner-a 仍匹配→释放;owner-b 替换→保留;获取返回 preserved→不清理;释放失败→报告而非强删。
检查比较和删除是同一原子机制,不只是先读 owner再分开 remove。这里不修改真实锁。
适用边界
令牌和辅助程序语义需真实保障,提示词不能实现原子性。硬终止可能来不及清理,需要有归属确认的恢复;模糊锁不能因便利自动删掉。冻结脚本路径不代表当前宿主可用。