我正在根据以下页面上的 Microsoft 示例代码编写自己的带有指数退避的重试逻辑:https ://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/implement-resilient-applications/explore-自定义 http-call-retries-exponential-backoff
在下面的代码行中有一个我无法理解的除以 2:
int delay = Math.Min(m_delayMilliseconds * (m_pow - 1) / 2,
m_maxDelayMilliseconds);
假设我定义int m_delayMilliseconds = 200
了 ,所以我们得到以下延迟:
200 * 1 / 2 --> 100 毫秒
200 * 2 / 2 --> 200 毫秒
200 * 4 / 2 --> 400 毫秒
200 * 8 / 2 --> 800 毫秒
200 * 16 / 2 --> 1600 毫秒
. . . 等等
令我不安的是,我的第一个延迟为 100 毫秒,但我希望最小延迟为 200 毫秒,如定义的那样。谁可以给我解释一下这个?