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.