58 using type = std::true_type;
59 static constexpr bool value =
true;
73 using type = std::true_type;
74 static constexpr bool value =
true;
88 using type = std::true_type;
89 static constexpr bool value =
true;
119 static constexpr bool value =
false;
134template <
typename Tp,
bool ThrLoc = Tp::value>
137template <
typename Tp>
141 : m_value(!get_global())
150 get_global() =
false;
159 operator
bool()
const {
return m_value; }
168 get_global() =
false;
178 if((m_value = !get_global()))
189 static thread_local bool _instance =
false;
199template <
typename Tp>
203 : m_value(exchange(
true))
218 operator
bool()
const {
return m_value; }
227 m_value = exchange(
false);
236 while(!(m_value = exchange(
true)))
246 static auto load() {
return get_global().load(std::memory_order_relaxed); }
252 return get_global().compare_exchange_strong(_load, _value,
253 std::memory_order_relaxed);
258 static std::atomic<bool> _instance{
false };
::tim::statistics< Tp > max(::tim::statistics< Tp > lhs, const Tp &rhs)
void load(Archive &ar, tim::node::graph< Tp > &d)
A lightweight synchronization object for preventing recursion. The first template parameter should ha...
Prevents recursion within a thread for compiler instrumentation functions. See also.
static constexpr bool value
static constexpr bool value
static auto exchange(bool _value)
lock(lock &&) noexcept=default
static std::atomic< bool > & get_global()
lock(lock &&) noexcept=default
static bool & get_global()
Prevents recursion within a thread for region functions. See also.
static constexpr bool value
static constexpr bool value
Prevents recursion with a thread for tracing functions. See also.
static constexpr bool value