#include "MetaCoreFoundation/MetaCoreId.h" #include namespace MetaCore { namespace { std::atomic GMetaCoreNextId{1}; } // namespace MetaCoreId MetaCoreIdGenerator::Generate() { return GMetaCoreNextId.fetch_add(1, std::memory_order_relaxed); } void MetaCoreIdGenerator::EnsureAbove(MetaCoreId value) { std::uint64_t desired = value + 1; std::uint64_t current = GMetaCoreNextId.load(std::memory_order_relaxed); while (current < desired && !GMetaCoreNextId.compare_exchange_weak(current, desired, std::memory_order_relaxed)) { } } } // namespace MetaCore