1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #pragma once
- #include "defaults.h"
- #include <util/generic/ptr.h>
- // named sempahore
- class TSemaphore {
- public:
- TSemaphore(const char* name, ui32 maxFreeCount);
- ~TSemaphore();
- // Increase the semaphore counter.
- void Release() noexcept;
- // Keep a thread held while the semaphore counter is equal 0.
- void Acquire() noexcept;
- // Try to enter the semaphore gate. A non-blocking variant of Acquire.
- // Returns 'true' if the semaphore counter decreased
- bool TryAcquire() noexcept;
- private:
- class TImpl;
- THolder<TImpl> Impl_;
- };
- // unnamed semaphore, faster, than previous
- class TFastSemaphore {
- public:
- TFastSemaphore(ui32 maxFreeCount);
- ~TFastSemaphore();
- void Release() noexcept;
- void Acquire() noexcept;
- bool TryAcquire() noexcept;
- private:
- class TImpl;
- THolder<TImpl> Impl_;
- };
|