3#include "../FoundationBase.h"
10#if defined(COGS_SINGLETHREADED)
14 constexpr void lock() noexcept {}
15 constexpr void unlock() noexcept {}
20 struct [[nodiscard]] LockGuard {
21 constexpr LockGuard(Mutex& m) noexcept : mutex(m) { mutex.lock(); }
22 constexpr ~LockGuard() noexcept { mutex.unlock(); }
29 struct [[nodiscard]] UniqueLock {
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; }
61 typedef std::thread Thread;
62 typedef std::mutex Mutex;
63 typedef std::lock_guard<Mutex> LockGuard;
64 typedef std::unique_lock<Mutex> UniqueLock;
66 template<
typename T>
using Future = std::future<T>;
70 COGSFOUNDATION_API
void setName(Thread& thread,
const std::string& name);
71 COGSFOUNDATION_API
void sleep(
int milliseconds);
72 COGSFOUNDATION_API
void yield();
73 COGSFOUNDATION_API
size_t hardwareConcurrency();
Contains all Cogs related functionality.