123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #ifndef CORE_THREAD_HPP
- #define CORE_THREAD_HPP
- #include <mutex>
- #include <thread>
- namespace Core {
- class Mutex final {
- std::mutex mutex{};
- public:
- void lock() noexcept;
- void unlock() noexcept;
- };
- class MutexGuard {
- Mutex& mutex;
- public:
- MutexGuard(Mutex& m);
- MutexGuard(const MutexGuard&) = delete;
- MutexGuard(MutexGuard&&) = delete;
- ~MutexGuard();
- MutexGuard& operator=(const MutexGuard&) = delete;
- MutexGuard& operator=(MutexGuard&&) = delete;
- };
- class Thread final {
- std::thread thread;
- public:
- using Function = void (*)(void*);
- Thread();
- Thread(const Thread& other) = delete;
- Thread(Thread&& other) noexcept;
- ~Thread();
- Thread& operator=(const Thread& other) = delete;
- Thread& operator=(Thread&& other) noexcept;
- void swap(Thread& other);
- bool start(Function f, void* p);
- bool join();
- };
- }
- #endif
|