diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-02-20 15:00:02 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-02-20 15:00:02 +0000 |
commit | fe38b38725d9d639f0e09f444e746c0bf2f8dc10 (patch) | |
tree | 2d3e185f41c71d064f7c805c080600bf29e0aa93 | |
parent | Remove unused worker from main (diff) | |
download | ilt-fe38b38725d9d639f0e09f444e746c0bf2f8dc10.tar.bz2 ilt-fe38b38725d9d639f0e09f444e746c0bf2f8dc10.tar.xz ilt-fe38b38725d9d639f0e09f444e746c0bf2f8dc10.zip |
Add a non-threaded worker
Runs work immediately for when compiler doesn't support C++20 semaphore
-rw-r--r-- | lib/worker.cpp | 10 | ||||
-rw-r--r-- | lib/worker.h | 29 |
2 files changed, 28 insertions, 11 deletions
diff --git a/lib/worker.cpp b/lib/worker.cpp index 3c12caa..fd255c7 100644 --- a/lib/worker.cpp +++ b/lib/worker.cpp @@ -1,8 +1,9 @@ #include "worker.h" -#include "work.h" -#include <algorithm> -#include <iterator> -#include <mutex> +#if __cpp_lib_semaphore +# include "work.h" +# include <algorithm> +# include <iterator> +# include <mutex> Worker::Worker() : todoLen {0} { @@ -44,3 +45,4 @@ Worker::worker() j->doWork(); } } +#endif diff --git a/lib/worker.h b/lib/worker.h index 5a13138..04e351b 100644 --- a/lib/worker.h +++ b/lib/worker.h @@ -1,14 +1,16 @@ #ifndef WORKER_H #define WORKER_H -#include <deque> -#include <memory> -#include <mutex> -#include <semaphore> -#include <special_members.hpp> -#include <thread> #include <utility> -#include <vector> + +#if __cpp_lib_semaphore +# include <deque> +# include <memory> +# include <mutex> +# include <semaphore> +# include <special_members.hpp> +# include <thread> +# include <vector> class Work; @@ -43,4 +45,17 @@ private: std::mutex todoMutex; }; +#else + +class Worker { +public: + template<typename T, typename... Params> + void + addWork(Params &&... params) + { + T(std::forward<Params>(params)...).doWork(); + } +}; + +#endif #endif |