ATLAS Offline Software
Loading...
Searching...
No Matches
TrigServices Namespace Reference

Helpers shared by monitoring services. More...

Functions

void conditionedSleep (std::chrono::milliseconds duration, const std::atomic< bool > &stopFlag)
 Sleep for duration or until stopFlag is set, whichever comes first.

Detailed Description

Helpers shared by monitoring services.

Function Documentation

◆ conditionedSleep()

void TrigServices::conditionedSleep ( std::chrono::milliseconds duration,
const std::atomic< bool > & stopFlag )
inline

Sleep for duration or until stopFlag is set, whichever comes first.

Definition at line 30 of file TrigServicesUtils.h.

32 {
33 const auto start = std::chrono::steady_clock::now();
34 while (true) {
35 if (stopFlag.load()) {
36 return;
37 }
38 const auto elapsed = std::chrono::steady_clock::now() - start;
39 if (elapsed >= duration) {
40 break;
41 }
42 const auto remaining = duration - std::chrono::duration_cast<std::chrono::milliseconds>(elapsed);
43 std::this_thread::sleep_for(std::min(std::chrono::milliseconds(500), remaining));
44 }
45 }