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 /lib | |
| 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
Diffstat (limited to 'lib')
| -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  | 
