LLVM: lib/Support/ExponentialBackoff.cpp Source File (original) (raw)
Go to the documentation of this file.
1
2
3
4
5
6
7
8
10#include
11
12using namespace llvm;
13
15 auto Now = std::chrono::steady_clock::now();
16 if (Now >= EndTime)
17 return false;
18
19 duration CurMaxWait = std::min(MinWait * CurrentMultiplier, MaxWait);
20 std::uniform_int_distribution<uint64_t> Dist(MinWait.count(),
21 CurMaxWait.count());
22
23
24 duration WaitDuration = std::min(duration(Dist(RandDev)), EndTime - Now);
25 if (CurMaxWait < MaxWait)
26 CurrentMultiplier *= 2;
27 std::this_thread::sleep_for(WaitDuration);
28 return true;
29}
bool waitForNextAttempt()
Blocks while waiting for the next attempt.
std::chrono::steady_clock::duration duration
This is an optimization pass for GlobalISel generic memory operations.