blob: 4aaef7ff8aa6c2a3145158385aebd696c20fb796 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include "atomic_time_point.hh"
#include <cassert>
namespace low_latency {
AtomicTimePoint::AtomicTimePoint() {}
AtomicTimePoint::~AtomicTimePoint() {}
bool AtomicTimePoint::has_value() const {
return this->count.load(std::memory_order_relaxed);
}
std::chrono::steady_clock::time_point AtomicTimePoint::get() const {
const auto result = this->count.load(std::memory_order_relaxed);
assert(result);
using namespace std::chrono;
return steady_clock::time_point{steady_clock::duration{result}};
}
void AtomicTimePoint::set(const std::chrono::steady_clock::time_point target) {
this->count.store(target.time_since_epoch().count(),
std::memory_order_relaxed);
}
} // namespace low_latency
|