Tervel
1.0.0
A collection of wait-free containers and algorithms.
|
#include <popback_op.h>
Public Member Functions | |
PopOp (Vector< T > *vec) | |
~PopOp () | |
bool | result (T &val) |
bool | result () |
void | set_failed () |
void | help_complete () |
Implementations of this function that upon its return the operation described in the OpRecord has been completed. More... | |
bool | is_watched () |
Public Member Functions inherited from tervel::util::OpRecord | |
OpRecord () | |
bool | on_watch (std::atomic< void * > *address, void *expected) |
This function is used to achieve a strong watch on an Element. More... | |
bool | on_is_watched () |
This function is used to check a strong watch on an Element. More... | |
void | on_unwatch () |
This function is used to remove a strong watch on an Element. More... | |
Public Member Functions inherited from tervel::util::memory::hp::Element | |
Element () | |
virtual | ~Element () |
void | safe_delete (bool no_check=false, ElementList *const element_list=tervel::tl_thread_info->get_hp_element_list()) |
This function is used to free a hazard pointer protected object if it is safe to do so OR add it to a list to be freed later. More... | |
Static Public Member Functions | |
static bool | execute (Vector< T > *vec, T &val) |
Static Public Attributes | |
static constexpr PopOpHelper< T > * | is_empty_const {reinterpret_cast<PopOpHelper<T> *>(0x1L)} |
Private Attributes | |
Vector< T > * | vec_ |
std::atomic< T > * | prev_spot_ {nullptr} |
std::atomic< PopOpHelper< T > * > | helper_ {nullptr} |
Friends | |
class | PopOpHelper< T > |
|
inline |
|
inline |
|
inlinestatic |
|
inlinevirtual |
Implementations of this function that upon its return the operation described in the OpRecord has been completed.
As such it must be thread-safe and the extending class must contain all the information necessary to complete the operation.
Implements tervel::util::OpRecord.
|
inline |
|
inline |
|
inline |
|
inline |
|
friend |
|
private |
|
static |
|
private |
|
private |