36 lines
741 B
C++
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;
|
|
}
|
|
|