YACLib
C++ library for concurrent tasks execution
|
#include <base_core.hpp>
Public Types | |
enum | State : std::uintptr_t { kEmpty = std::uintptr_t{0} , kResult = std::numeric_limits<std::uintptr_t>::max() } |
Public Member Functions | |
bool | Empty () const noexcept |
void | MoveExecutorTo (BaseCore &callback) noexcept |
void | CopyExecutorTo (BaseCore &callback) noexcept |
![]() | |
virtual InlineCore * | Here (InlineCore &caller) noexcept=0 |
![]() | |
virtual void | Drop () noexcept |
![]() | |
virtual void | Call () noexcept |
![]() | |
virtual void | IncRef () noexcept |
Increments reference counter. | |
virtual void | DecRef () noexcept |
Decrements reference counter. | |
virtual std::size_t | GetRef () noexcept |
virtual | ~IRef () noexcept=default |
Public Attributes | |
IExecutorPtr | _executor {NoRefTag{}, &MakeInline()} |
![]() | |
Node * | next = nullptr |
Protected Member Functions | |
BaseCore (State state) noexcept | |
void | StoreCallbackImpl (InlineCore &callback) noexcept |
template<bool Shared> | |
bool | SetCallbackImpl (InlineCore &callback) noexcept |
bool | ResetImpl () noexcept |
template<bool SymmetricTransfer, bool Shared> | |
Transfer< SymmetricTransfer > | SetInlineImpl (InlineCore &callback) noexcept |
template<bool SymmetricTransfer, bool Shared> | |
Transfer< SymmetricTransfer > | SetResultImpl () noexcept |
Protected Attributes | |
yaclib_std::atomic_uintptr_t | _callback |
Friends | |
struct | UniqueHandle |
struct | SharedHandle |
Definition at line 16 of file base_core.hpp.
enum yaclib::detail::BaseCore::State : std::uintptr_t |
Enumerator | |
---|---|
kEmpty | |
kResult |
Definition at line 21 of file base_core.hpp.
|
inlineexplicitprotectednoexcept |
Definition at line 55 of file base_core.hpp.
References yaclib::MakeContract().
Definition at line 38 of file base_core.hpp.
References _executor, yaclib::MakeContract(), and YACLIB_ASSERT.
|
inlinenoexcept |
Definition at line 26 of file base_core.hpp.
References _callback, kEmpty, and yaclib::MakeContract().
Definition at line 31 of file base_core.hpp.
References _executor, yaclib::MakeContract(), and YACLIB_ASSERT.
|
protectednoexcept |
Definition at line 30 of file base_core.cpp.
References _callback, kEmpty, kResult, and yaclib::MakeContract().
|
protectednoexcept |
Definition at line 6 of file base_core.cpp.
References yaclib::MakeContract(), yaclib::detail::Shared, and YACLIB_ASSERT.
|
protectednoexcept |
Definition at line 37 of file base_core.cpp.
References yaclib::MakeContract().
|
protectednoexcept |
Definition at line 53 of file base_core.cpp.
References _callback, yaclib::IRef::DecRef(), kEmpty, kResult, yaclib::detail::Loop(), yaclib::MakeContract(), yaclib::detail::Node::next, yaclib::detail::Shared, and YACLIB_ASSERT.
|
inlineprotectednoexcept |
Definition at line 58 of file base_core.hpp.
References _callback, and yaclib::MakeContract().
Referenced by yaclib::detail::NoResultCore::StoreCallback(), and yaclib::detail::UniqueCore< V, E >::StoreCallback().
|
friend |
Definition at line 18 of file base_core.hpp.
|
friend |
Definition at line 17 of file base_core.hpp.
|
protected |
Definition at line 73 of file base_core.hpp.
Referenced by Empty(), ResetImpl(), SetResultImpl(), StoreCallbackImpl(), and yaclib::detail::ResultCore< V, E >::~ResultCore().
IExecutorPtr yaclib::detail::BaseCore::_executor {NoRefTag{}, &MakeInline()} |
Definition at line 52 of file base_core.hpp.
Referenced by yaclib::detail::MutexImpl< FIFO, Batching >::AwaitUnlock(), yaclib::detail::MutexImpl< FIFO, Batching >::AwaitUnlockOn(), CopyExecutorTo(), MoveExecutorTo(), and yaclib::detail::MutexImpl< FIFO, Batching >::UnlockHereAwait().