抱歉,这不是技术问题。
OTP主管重启战略名称对我来说似乎很奇怪,可能是因为我不是母语为英语的人。
根据我的理解:
one_for_one
:当一个孩子死亡时,它重新启动那个孩子one_for_all
:当一个孩子死亡时,它会杀死所有其他孩子并按顺序重新启动它们rest_for_one
:当一个孩子死亡时,它会杀死在那些死去的孩子之后启动的所有孩子,并按顺序重新启动它们这是我的问题:
我试图通过将它们读作句子来理解这些策略名称,例如: “重启one
孩子for
one
孩子的死”
然后,one_for_all
或rest_for_one
对我来说似乎是倒置的名称。 ("restart one child for all children's death"
?)
为什么这些策略的名字是这样的?
c.f。 The erlang docs one_for_all
section有一个数字说“一对一的监督”。这只是一个错字吗?
答案 0 :(得分:0)
“'因为什么时候一切都是为了所有人。”布莱恩亚当斯或三个火枪手
所以当一个人关机时你会全部重新启动,或者当一个人关机时你重新开始休息。
答案 1 :(得分:0)
strategy() = one_for_all
| one_for_one
| rest_for_one
| simple_one_for_one
我将跳过
simple_one_for_one
并专注于其他三个。
我相信重新启动策略的名称是从English idiom“一劳永逸,一劳永逸”获得的。该表达式看起来非常old。
one_for_one
:意思是一个被新启动的子进程取代。
one_for_all
:(根据习惯用法)是指如果一个终止,那么我们(孩子) all 终止并重新开始。
rest_for_one
:如果有人摔倒了,那么 rest 也会终止,然后重新开始。在这种情况下,“其余”是指指定的start order中所有成功的(后)子级。请注意,这与上面的唯一区别是遵守开始顺序。
我更喜欢将它们视为“单一”策略(即one_for_one
)和“完整”策略(即one_for_all
和rest_for_one
)。在大多数情况下,这可以正常工作。