#include <rcu.h>
Definition at line 20 of file rcu.h.
◆ RCUInfos()
◆ ~RCUInfos()
Before the thread is removed from the list, make sure we cleanup everything.
We have our node and the parent is ready to be updated. NB: The CAS operation only checks for *ptr and not for next. This would be a big problem in the general case, but because we only insert at the tip of the list and cannot have concurrent deletion thanks to the use of a mutex, we are safe.
We now wait for possible readers to go past the synchronization point. We need to do so while holding the lock as this operation require us to a be a reader, but we just removed ourselves from the list of reader to check and may therefore not be waited for.
Definition at line 117 of file rcu.cpp.
◆ hasSyncedTo()
uint64_t RCUInfos::hasSyncedTo |
( |
uint64_t |
cutoff = UNLOCKED | ) |
|
|
private |
◆ isLocked()
bool RCUInfos::isLocked |
( |
| ) |
const |
|
inlineprivate |
Definition at line 45 of file rcu.h.
◆ readFree()
void RCUInfos::readFree |
( |
| ) |
|
|
inlineprivate |
Definition at line 40 of file rcu.h.
◆ readLock()
void RCUInfos::readLock |
( |
| ) |
|
|
inlineprivate |
Definition at line 35 of file rcu.h.
◆ registerCleanup()
void RCUInfos::registerCleanup |
( |
const std::function< void()> & |
f | ) |
|
|
inlineprivate |
Definition at line 46 of file rcu.h.
◆ runCleanups()
void RCUInfos::runCleanups |
( |
| ) |
|
|
private |
◆ synchronize()
void RCUInfos::synchronize |
( |
| ) |
|
|
private |
◆ RCULock
Definition at line 54 of file rcu.h.
◆ RCUTest
Definition at line 55 of file rcu.h.
◆ cleanups
std::map<uint64_t, std::function<void()> > RCUInfos::cleanups |
|
private |
Definition at line 27 of file rcu.h.
◆ infos
thread_local RCUInfos RCUInfos::infos {} |
|
staticprivate |
Definition at line 58 of file rcu.h.
◆ isCleaningUp
bool RCUInfos::isCleaningUp = false |
|
private |
Definition at line 24 of file rcu.h.
◆ next
Definition at line 22 of file rcu.h.
◆ revision
std::atomic< uint64_t > RCUInfos::revision {0} |
|
staticprivate |
Definition at line 57 of file rcu.h.
◆ state
std::atomic<uint64_t> RCUInfos::state |
|
private |
Definition at line 21 of file rcu.h.
◆ UNLOCKED
const uint64_t RCUInfos::UNLOCKED = -uint64_t(1) |
|
staticprivate |
Definition at line 30 of file rcu.h.
The documentation for this class was generated from the following files: