【问题标题】:Testing a race condition in Phoenix在凤凰城测试比赛条件
【发布时间】:2016-12-24 18:36:05
【问题描述】:

如果我想在 Phoenix 中测试竞争条件(例如,当同时插入两条记录以处理某些序列生成而不发生冲突时),最好的处理方法是什么?

如何确保发生碰撞?

【问题讨论】:

    标签: elixir phoenix-framework


    【解决方案1】:

    我的朋友,你是个贪吃的人。

    不幸的是,没有工具可以重现 Erlang 的竞争条件,更不用说大多数语言了。您通常会得到最接近的检测软件,例如 Helgrind for C/C++Chess for C#/C++

    关注this advice from the Programming StackExchange site

    在测试中没有很好的通用方法来触发竞争条件。

    您唯一的希望是完全脱离您的系统来设计它们。

    当你发现别人塞了一个,你应该 将他标出一个蚁丘,然后重新设计以消除它。在你之后 已经在你的系统之外设计了他的失礼(发音为 f***up),你 可以去把他从蚂蚁手里放出来。 (如果蚂蚁已经吃过 他只留下骨头,竖起一个牌子,上面写着“这就是发生在 将比赛条件放入 XYZ 项目的人!”然后离开他 在那里。)

    【讨论】:

    • 因此,即使期望像一堆 Task.async 一样旋转并希望发生冲突也是不现实的?
    • 是的。您最好先弄清楚如何设计您的系统以防止这些情况发生。
    猜你喜欢
    • 2016-05-03
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 2017-04-18
    • 2015-09-06
    • 1970-01-01
    相关资源
    最近更新 更多