![]() |
ATLAS Offline Software
|
Classes | |
struct | CHMTableIterator |
Helper to generate hash probes. More... | |
class | ConcurrentHashmapImpl |
Hash table allowing concurrent, lockless reads. More... | |
class | HashmapLock |
Helper to allow for external locking with put(). More... | |
struct | SizedUInt |
struct | SizedUInt< 1 > |
struct | SizedUInt< 2 > |
struct | SizedUInt< 4 > |
struct | SizedUInt< 8 > |
union | UIntConv |
Helpers for converting between uintptr_t and a pointer or integer. More... | |
union | UIntConv< uintptr_t > |
Typedefs | |
using | ConcurrentHashmapVal_t = uintptr_t |
Type used for keys and values — an unsigned big enough to hold a pointer. More... | |
Variables | |
template<class HASHER , class T > | |
concept | IsHash |
template<class PRED , class ARG1 , class ARG2 = ARG1> | |
concept | IsBinaryPredicate |
template<class CONTAINER > | |
concept | IsContiguousContainer |
template<class ITERATOR , class VAL > | |
concept | InputValIterator |
template<class T > | |
concept | IsConcurrentHashmapPayload |
Concept for a value that can be saved in a concurrent hash map. More... | |
template<class COMPARE , class RANGE , class KEY , class CONTEXT > | |
concept | IsConcurrentRangeCompare |
Concept for comparison template argument. More... | |
template<template< class > class UPDATER> | |
concept | IsUpdater |
Concept check for Updater class used by concurrent classes. More... | |
using CxxUtils::detail::ConcurrentHashmapVal_t = typedef uintptr_t |
Type used for keys and values — an unsigned big enough to hold a pointer.
Need to have this defined outside of ConcurrentHashmapImpl itself in order to avoid instantiation circularities, as the HASHER_ and MATCHER_ classes will probably want to use it.
Definition at line 40 of file ConcurrentHashmapImpl.h.
concept CxxUtils::detail::InputValIterator |
Definition at line 55 of file concepts.h.
concept CxxUtils::detail::IsBinaryPredicate |
Definition at line 41 of file concepts.h.
concept CxxUtils::detail::IsConcurrentHashmapPayload |
Concept for a value that can be saved in a concurrent hash map.
Must be a trivial type that can fit in a uintptr_t
Definition at line 49 of file ConcurrentHashmapImpl.h.
concept CxxUtils::detail::IsConcurrentRangeCompare |
Concept for comparison template argument.
See below for details.
Definition at line 101 of file ConcurrentRangeMap.h.
concept CxxUtils::detail::IsContiguousContainer |
concept CxxUtils::detail::IsHash |
concept CxxUtils::detail::IsUpdater |
Concept check for Updater class used by concurrent classes.
In order to implement updating concurrently with reading, we need to defer deletion of objects until no thread can be referencing them any more. The policy for this for the internal implementation objects is set by the template UPDATER<T>. An object of this type owns an object of type T. It should provide a typedef Context_t, giving a type for an event context, identifying which thread/slot is currently executing. It should implement these operations:
For an example, see AthenaKernel/RCUUpdater.h.
Definition at line 51 of file IsUpdater.h.