MostlyHarmless 0.0.1
 
Loading...
Searching...
No Matches
mostlyharmless_TaskThread.h
Go to the documentation of this file.
1//
2// Created by Syl on 12/08/2024.
3//
4
5#ifndef MOSTLYHARMLESS_MOSTLYHARMLESS_TASKTHREAD_H
6#define MOSTLYHARMLESS_MOSTLYHARMLESS_TASKTHREAD_H
7#include <functional>
8#include <atomic>
9#include <mutex>
10#include <thread>
11
13 class TaskThread {
14 public:
15 ~TaskThread() noexcept;
16 void perform();
17 void stop(bool join) noexcept;
18 void sleep();
19 void wake();
20 [[nodiscard]] bool isThreadRunning() const noexcept;
21 std::function<void(void)> action{ nullptr };
22
23 private:
24 std::mutex m_mutex;
25 std::atomic<bool> m_isThreadRunning{ false };
26 std::atomic<bool> m_canWakeUp{ false };
27 std::condition_variable m_conditionVariable;
28 std::unique_ptr<std::thread> m_thread{ nullptr };
29 };
30} // namespace mostly_harmless::utils
31#endif // MOSTLYHARMLESS_MOSTLYHARMLESS_TASKTHREAD_H
Definition mostlyharmless_TaskThread.h:13
std::function< void(void)> action
Definition mostlyharmless_TaskThread.h:21
bool isThreadRunning() const noexcept
void stop(bool join) noexcept
Contains general purpose utility classes & functions.
Definition mostlyharmless_TaskThread.h:12