32inline std::chrono::milliseconds
FileInUseBackoff(
int aAttempt, std::minstd_rand& aRng )
34 constexpr long long FIRST_WAIT_MS = 100;
35 constexpr int MAX_DOUBLINGS = 4;
37 const long long ceiling = FIRST_WAIT_MS << std::clamp( aAttempt, 0, MAX_DOUBLINGS );
39 std::uniform_int_distribution<long long> spread( ceiling / 2, ceiling );
41 return std::chrono::milliseconds( spread( aRng ) );