Mnesia允许您限制重试交易的次数:
MyFun = fun() -> ... end,
{atomic, ok} = mnesia:transaction(MyFun, [], 42)
如果您未指定数字,则默认为infinity
。
我从未见过任何实际限制重试次数的代码。你呢?在什么情况下它有用?
答案 0 :(得分:1)
您可以在实施soft real-time systems时限制重试次数,其中某些操作必须在规定的持续时间内或在指定的时间内发生,如果不是,则必须采取其他措施。
在这种情况下,您不希望其他进程等待,而不确定事务是否成功。但是,mnesia的几个事务上下文可能会改变应用程序中事务提交的方式。
但是,根据我的个人经验,使用mnesia的实时系统应该使用mnesia事件来处理,任何写入,更新,删除,插入,e.t.c都会为所有订阅的进程/服务器生成一个瞬时事件。所以收到此事件消息的人会采取他们想要的任何行动。