Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
ThreadRunnable.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_THREADS_THREADRUNNABLE_HPP_
2#define IV_SRC_THREADS_THREADRUNNABLE_HPP_
3
4#include "core/defines.hpp"
6
7#include <condition_variable>
8#include <cstdint>
9
10namespace iv::threads
11{
12
14{
15public:
16 explicit ThreadRunnable(std::weak_ptr<bool> isEnabledRef);
18 ~ThreadRunnable() override;
19 ThreadRunnable(const ThreadRunnable &other) = delete;
20 ThreadRunnable(ThreadRunnable &&other) = delete;
21
22 ThreadRunnable &operator=(const ThreadRunnable &other) = delete;
24
25 bool isRunning() override;
26 bool isPaused() override;
27 bool isStopped() override;
28
29 void run() override;
30 void pause() override;
31 void resume() override;
32 void stop() override;
33
34protected:
35 virtual void runFrame() = 0;
36 void sleepFrame(iv::types::pollTime milliseconds);
37
38private:
39 std::mutex m_mutex;
40 std::condition_variable m_cv;
41 std::atomic<IRunnable::eRunnableState> m_stateThread;
42
43 std::weak_ptr<bool> m_isEnabled;
44};
45
46}// namespace iv::threads
47
48#endif /* IV_SRC_THREADS_THREADRUNNABLE_HPP_ */
Definition IRunnable.hpp:10
Definition ThreadRunnable.hpp:14
void stop() override
Definition ThreadRunnable.cpp:112
ThreadRunnable & operator=(ThreadRunnable &&other)=delete
void pause() override
Definition ThreadRunnable.cpp:101
std::condition_variable m_cv
Definition ThreadRunnable.hpp:40
bool isStopped() override
Definition ThreadRunnable.cpp:48
ThreadRunnable(ThreadRunnable &&other)=delete
ThreadRunnable()
Definition ThreadRunnable.cpp:25
std::mutex m_mutex
Definition ThreadRunnable.hpp:39
void resume() override
Definition ThreadRunnable.cpp:106
ThreadRunnable(const ThreadRunnable &other)=delete
std::weak_ptr< bool > m_isEnabled
Definition ThreadRunnable.hpp:43
~ThreadRunnable() override
Definition ThreadRunnable.cpp:31
bool isPaused() override
Definition ThreadRunnable.cpp:43
ThreadRunnable & operator=(const ThreadRunnable &other)=delete
bool isRunning() override
Definition ThreadRunnable.cpp:38
std::atomic< IRunnable::eRunnableState > m_stateThread
Definition ThreadRunnable.hpp:41
void sleepFrame(iv::types::pollTime milliseconds)
Definition ThreadRunnable.cpp:118
void run() override
Definition ThreadRunnable.cpp:53
virtual void runFrame()=0
Definition BackgroundTaskWithDialog.cpp:8
std::chrono::milliseconds pollTime
Definition types.hpp:44