【发布时间】:2016-12-24 18:36:05
【问题描述】:
如果我想在 Phoenix 中测试竞争条件(例如,当同时插入两条记录以处理某些序列生成而不发生冲突时),最好的处理方法是什么?
如何确保发生碰撞?
【问题讨论】:
如果我想在 Phoenix 中测试竞争条件(例如,当同时插入两条记录以处理某些序列生成而不发生冲突时),最好的处理方法是什么?
如何确保发生碰撞?
【问题讨论】:
我的朋友,你是个贪吃的人。
不幸的是,没有工具可以重现 Erlang 的竞争条件,更不用说大多数语言了。您通常会得到最接近的检测软件,例如 Helgrind for C/C++ 和 Chess for C#/C++。
关注this advice from the Programming StackExchange site:
在测试中没有很好的通用方法来触发竞争条件。
您唯一的希望是完全脱离您的系统来设计它们。
当你发现别人塞了一个,你应该 将他标出一个蚁丘,然后重新设计以消除它。在你之后 已经在你的系统之外设计了他的失礼(发音为 f***up),你 可以去把他从蚂蚁手里放出来。 (如果蚂蚁已经吃过 他只留下骨头,竖起一个牌子,上面写着“这就是发生在 将比赛条件放入 XYZ 项目的人!”然后离开他 在那里。)
【讨论】:
Task.async 一样旋转并希望发生冲突也是不现实的?