【发布时间】:2012-02-08 22:11:15
【问题描述】:
Mnesia 允许您限制重试事务的次数:
MyFun = fun() -> ... end,
{atomic, ok} = mnesia:transaction(MyFun, [], 42)
如果不指定数字,则默认为infinity。
我从未见过任何实际限制重试次数的代码。你?在什么情况下有用?
【问题讨论】:
Mnesia 允许您限制重试事务的次数:
MyFun = fun() -> ... end,
{atomic, ok} = mnesia:transaction(MyFun, [], 42)
如果不指定数字,则默认为infinity。
我从未见过任何实际限制重试次数的代码。你?在什么情况下有用?
【问题讨论】:
当您实施soft real-time systems 时,您可以限制重试次数,其中某些操作必须在定义的持续时间或指定时间发生,如果不发生,则必须采取其他操作。
在这种情况下,您不希望其他进程在不确定事务是否成功的情况下等待。但是,mnesia 的几个事务上下文可能会改变事务提交在您的应用程序中完成的方式。
但是,根据我的个人经验,应该使用 mnesia 事件处理具有 mnesia 的实时系统,由此,任何写入、更新、删除、插入等都会为所有订阅的进程/服务器生成一个瞬时事件,然后。因此,收到此事件消息的人会采取他们希望采取的任何行动。
【讨论】: