1 #include <samchon/library/Semaphore.hpp> 12 Semaphore::Semaphore(
size_t size)
18 countMtx =
new mutex();
20 Semaphore::~Semaphore()
26 void Semaphore::setSize(
size_t val)
28 unique_lock<mutex> uk(*countMtx);
36 auto Semaphore::size() const ->
size_t 40 auto Semaphore::acquiredSize() const ->
size_t 42 unique_lock<mutex> uk(*countMtx);
50 void Semaphore::acquire()
52 unique_lock<mutex> uk(*countMtx);
54 if (++acquired >= size_)
60 auto Semaphore::tryAcquire() ->
bool 62 unique_lock<mutex> uk(*countMtx);
64 if (acquired == size_)
68 if (++acquired >= size_)
69 return mtx->try_lock();
75 void Semaphore::release()
77 unique_lock<mutex> uk(*countMtx);
79 if (acquired != 0 && --acquired == size_ - 1)