|
cds
2.3.3
|
User-space general-purpose RCU with deferred buffered reclamation. More...
#include <cds/urcu/general_buffered.h>
Public Types | |
| typedef general_buffered< Buffer, Lock, Backoff > | rcu_implementation |
| Wrapped URCU implementation. | |
| typedef rcu_implementation::rcu_tag | rcu_tag |
| URCU tag. | |
| typedef rcu_implementation::thread_gc | thread_gc |
| Thread-side RCU part. | |
| typedef rcu_implementation::scoped_lock | scoped_lock |
| Access lock class. | |
Public Member Functions | |
| gc (size_t nBufferCapacity=256) | |
Creates URCU general_buffered singleton. | |
| ~gc () | |
Destroys URCU general_instant singleton. | |
Static Public Member Functions | |
| static void | synchronize () |
| Waits to finish a grace period and clears the buffer. More... | |
| template<typename T > | |
| static void | retire_ptr (T *p, free_retired_ptr_func pFunc) |
Places retired pointer <p, pFunc> to internal buffer. More... | |
| template<typename Disposer , typename T > | |
| static void | retire_ptr (T *p) |
Places retired pointer p with Disposer to internal buffer. More... | |
| static void | retire_ptr (retired_ptr &p) |
Places retired pointer p to internal buffer. More... | |
| template<typename ForwardIterator > | |
| static void | batch_retire (ForwardIterator itFirst, ForwardIterator itLast) |
Frees chain [ itFirst, itLast) in one synchronization cycle. | |
| template<typename Func > | |
| static void | batch_retire (Func e) |
Retires the pointer chain until Func returns nullptr retired pointer. | |
| static void | access_lock () |
| Acquires access lock (so called RCU reader-side lock) More... | |
| static void | access_unlock () |
| Releases access lock (so called RCU reader-side lock) More... | |
| static size_t | capacity () |
| Returns the threshold of internal buffer. | |
| static bool | is_locked () |
| Checks if the thread is inside read-side critical section (i.e. the lock is acquired) More... | |
| static void | force_dispose () |
| Forces retired object removal. More... | |
User-space general-purpose RCU with deferred buffered reclamation.
This is a wrapper around general_buffered class.
Template arguments:
Buffer - lock-free queue or lock-free bounded queue. Default is cds::container::VyukovMPMCCycleQueue< retired_ptr > Lock - mutex type, default is std::mutex Backoff - back-off schema, default is cds::backoff::Default
|
inlinestatic |
Acquires access lock (so called RCU reader-side lock)
For safety reasons, it is better to use scoped_lock class for locking/unlocking
|
inlinestatic |
Releases access lock (so called RCU reader-side lock)
For safety reasons, it is better to use scoped_lock class for locking/unlocking
|
inlinestatic |
Forces retired object removal.
This function calls synchronize
|
inlinestatic |
Checks if the thread is inside read-side critical section (i.e. the lock is acquired)
Usually, this function is used internally to be convinced that subsequent remove action is not lead to a deadlock.
|
inlinestatic |
Places retired pointer <p, pFunc> to internal buffer.
If the buffer is full, synchronize function is invoked.
|
inlinestatic |
Places retired pointer p with Disposer to internal buffer.
If the buffer is full, synchronize function is invoked.
|
inlinestatic |
Places retired pointer p to internal buffer.
If the buffer is full, synchronize function is invoked.
|
inlinestatic |
Waits to finish a grace period and clears the buffer.
After grace period finished the function frees all retired pointer from internal buffer.