共享物体的同时操作需要明确的控制权仲裁规则
别名: 控制权仲裁 · 同时抓取 · turn-taking lock · 操作锁
概念解释
两只手同时拧同一颗虚拟螺丝,一人往顺、一人往逆,物体在两边的画面里各转各的,松手瞬间跳到某次「最后写入」。控制权仲裁(floor control)是事先说清:同时操作时谁的输入生效、另一人看见什么、如何交接。不是谁有权限碰这颗螺丝——那是准入;这是已经都能碰之后,冲突怎么收场。
没有仲裁,空间里的「一起动手」会退化成抢写。
机制
共享物体只有一份权威状态。两人的输入在不同时刻到达主机或互相到达,后到的会覆盖先到的,或两边各自模拟后再对账。无论哪一种,若界面不声明此刻谁在控,双方都会以为自己的旋转正在发生,松手才发现被对方改写。物理世界用碰撞和摩擦把双人扭矩合成一个结果;虚拟物体没有这份力学,必须用锁、令牌、或可预测的合并函数代替。
仲裁失败的表面是抖动,根子是责任不清。人不知道该松手还是该再拧,于是反复抢。令牌可见(物体高亮属于某人、他人只能看)把冲突前移到伸手那一刻;令牌不可见,冲突就发生在提交之后,修起来更贵。
怎么研究
用双人同时操作:同一物体,比较无锁(最后写入获胜)、排他锁、软锁(可抢但有倒计时)、合成输入(力矩相加)。看冲突次数、完成时间、以及「我以为我在控」的误报。
自变量:仲裁策略、网络延迟、物体是否有明确的单人语义(一颗螺丝 vs 一块可共同抬起的板)。 因变量:重复抢夺次数、撤销次数、任务成功、主观控制感。
让两人错开三秒再下手,测不到仲裁,只能测顺序操作。必须制造时间重叠。
边界
只读共享(一起看模型、一人演示)不需要仲裁,标注「正在演示」即可。真正可并行的物体(一块要两人抬的板、一份要同时缩放的地图)应用合成而非排他,硬锁会把协作拆成轮流。权限不足的人根本发不出输入,那是准入失败,不要当成仲裁成功。延迟很高时,即使用了锁,锁的申请和释放本身也会打架,需要带超时的租约,而不是永不释放的独占。
怎么落地
- 为每个可操作共享物选定一种仲裁:默认排他锁给「一次只能一人改」的零件,合成给「本就该一起使力」的物体,禁止静默的最后写入。
- 锁要可见:持有者高亮,他人伸手时收到「正在被某某操作」,并给出等待或请求交接。
- 锁必须能超时释放;持有者跟踪丢失或掉线不得把物体永久锁死。
- 验证:让两人在同一秒去拧同一颗螺丝。应只有一方旋转生效,另一方立即看到持有者。两边都转、松手后跳变,就是在用最后写入冒充协作。