diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-07-31 17:14:21 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-07-31 17:14:21 +0100 |
commit | 6b9fdc6ad3ac84cf8b8543b6e46b0ca8c4d61860 (patch) | |
tree | 1152b920b5b6481f9b4a9d31927ece6de658f93b /test/semaphore.h | |
parent | before and afterEvents virtual/protected (diff) | |
download | mygrate-6b9fdc6ad3ac84cf8b8543b6e46b0ca8c4d61860.tar.bz2 mygrate-6b9fdc6ad3ac84cf8b8543b6e46b0ca8c4d61860.tar.xz mygrate-6b9fdc6ad3ac84cf8b8543b6e46b0ca8c4d61860.zip |
Build a basic hacky semaphore for compilers that don't support std::binary_semaphore yet
Diffstat (limited to 'test/semaphore.h')
-rw-r--r-- | test/semaphore.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/semaphore.h b/test/semaphore.h new file mode 100644 index 0000000..f2e9355 --- /dev/null +++ b/test/semaphore.h @@ -0,0 +1,27 @@ +#ifndef MYGRATE_TEST_SEMAPHORE_H +#define MYGRATE_TEST_SEMAPHORE_H + +#if __has_include(<semaphore>) +# include <semaphore> +#endif + +#ifdef __cpp_lib_semaphore +using semaphore = std::binary_semaphore; +#else +# include <mutex> +class semaphore { +public: + semaphore(unsigned int v_); + + void release(unsigned int n = 1); + + void acquire(); + +private: + bool try_dec(); + unsigned int v; + std::mutex m; +}; +#endif + +#endif |