#include <common/system.h>
#include <rcu.h>
#include <array>
#include <atomic>
#include <cstdint>
#include <memory>
#include <type_traits>
Go to the source code of this file.
◆ SEEK_LEAF_LOOP
#define SEEK_LEAF_LOOP |
( |
| ) |
|
Value: RadixElement e = eptr->load(); \
\
\
do { \
while (e.isNode()) { \
Node: \
auto nptr = e.getNode(); \
if (!nptr->isShared()) { \
eptr = nptr->get(level--, key); \
e = eptr->load(); \
continue; \
} \
\
auto copy = std::make_unique<RadixNode>(*nptr); \
if (!eptr->compare_exchange_strong(e, RadixElement(copy.get()))) { \
\
continue; \
} \
\
\
e.decrementRefCount(); \
eptr = copy->get(level--, key); \
e = eptr->load(); \
copy.release(); \
} \
} while (0)
Definition at line 149 of file radix.h.