diff options
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 |