#include "Stroika/Foundation/StroikaPreComp.h"
#include <compare>
#include <functional>
#include <mutex>
#include <optional>
#include <shared_mutex>
#include <type_traits>
#include "Stroika/Foundation/Common/Common.h"
#include "Stroika/Foundation/Common/Empty.h"
#include "Stroika/Foundation/Common/TypeHints.h"
#include "Stroika/Foundation/Execution/Common.h"
#include "Stroika/Foundation/Execution/Finally.h"
#include "Stroika/Foundation/Execution/SpinLock.h"
#include "Synchronized.inl"
Go to the source code of this file.
Classes | |
struct | Stroika::Foundation::Execution::Synchronized_Traits< MUTEX > |
class | Stroika::Foundation::Execution::Synchronized< T, TRAITS > |
Wrap any object with Synchronized<> and it can be used similarly to the base type, but safely in a thread safe manner, from multiple threads. This is similar to std::atomic. More... | |
class | Stroika::Foundation::Execution::Synchronized< T, TRAITS >::ReadableReference |
Namespaces | |
namespace | Stroika::Foundation |
namespace | Stroika::Foundation::Execution |
Typedefs | |
template<typename T > | |
using | Stroika::Foundation::Execution::QuickSynchronized = conditional_t< kSpinLock_IsFasterThan_mutex, Synchronized< T, Synchronized_Traits< SpinLock > >, Synchronized< T, Synchronized_Traits< mutex > > > |
template<typename T > | |
using | Stroika::Foundation::Execution::TimedSynchronized = Synchronized< T, Synchronized_Traits< recursive_timed_mutex > > |
template<typename T > | |
using | Stroika::Foundation::Execution::RWSynchronized = Synchronized< T, Synchronized_Traits< shared_timed_mutex > > |
Enumerations | |
enum class | Stroika::Foundation::Execution::InternallySynchronized |
enum class | _ExternallyLocked |
|
strongprotected |
If specified, either subclass, or external lock used for lifetime of this object. So this class just provides access, but doesn't actually do a lock.
Definition at line 602 of file Synchronized.h.