3#include "../FoundationBase.h"
10#if defined(COGS_SINGLETHREADED)
14 constexpr void lock() noexcept {}
15 constexpr void unlock() noexcept {}
21 constexpr LockGuard(Mutex& m) noexcept : mutex(m) { mutex.lock(); }
22 constexpr ~LockGuard() noexcept { mutex.unlock(); }
30 constexpr UniqueLock(Mutex& m) noexcept : mutex(m) { mutex.lock(); }
31 constexpr ~UniqueLock() noexcept { mutex.unlock(); }
32 constexpr UniqueLock(Mutex& m, std::defer_lock_t ) noexcept
38 constexpr void lock() { mutex.lock(); }
41 constexpr void unlock() { mutex.unlock(); }
50 template<
typename T>
struct Future {
51 T get() {
return T(); }
52 bool valid() {
return true; }
55 template<>
struct Future<void> {
57 bool valid() {
return true; }
66 template<
typename T>
using Future = std::future<T>;
#define COGSFOUNDATION_API
Definition: FoundationBase.h:31
COGSFOUNDATION_API void sleep(int milliseconds)
Definition: Threads.Emscripten.cpp:30
COGSFOUNDATION_API size_t hardwareConcurrency()
Definition: Threads.Emscripten.cpp:38
COGSFOUNDATION_API void setName(Thread &thread, const std::string &name)
Definition: Threads.Emscripten.cpp:26
COGSFOUNDATION_API void yield()
Definition: Threads.Emscripten.cpp:34
Main Cogs namespace.
Definition: MortonCode.h:5
std::future< T > Future
Definition: Threads.h:66
std::unique_lock< Mutex > UniqueLock
Definition: Threads.h:64
std::thread Thread
Definition: Threads.h:61
std::mutex Mutex
Definition: Threads.h:62
std::lock_guard< Mutex > LockGuard
Definition: Threads.h:63