Files
libsst/ZUtil/ZSemaphore.cpp
2026-04-03 00:22:39 -05:00

36 lines
741 B
C++

#include <ZUtil/ZSemaphore.hpp>
#include <ZUtil/ZAssert.hpp>
#include <SST/SST_Concurrency.h> //For SST_WAIT_INFINITE
ZSemaphore::ZSemaphore(int _initialCount)
: Semaphore(SST_Concurrency_CreateSemaphore(_initialCount))
{
ZASSERT_RUNTIME(Semaphore != NULL, "ZSemaphore failed to allocate semaphore from libsst-concurrency!");
}
ZSemaphore::~ZSemaphore()
{
}
void ZSemaphore::Post()
{
SST_Concurrency_PostSemaphore(Semaphore, 1);
}
void ZSemaphore::Post( uint32_t _count )
{
SST_Concurrency_PostSemaphore(Semaphore, _count);
}
bool ZSemaphore::Wait()
{
return SST_Concurrency_WaitSemaphore(Semaphore, SST_WAIT_INFINITE) != 0;
}
bool ZSemaphore::Wait( uint32_t _ms )
{
return SST_Concurrency_WaitSemaphore(Semaphore, _ms) != 0;
}