Mercurial > hg > orthanc
diff OrthancFramework/Sources/MultiThreading/Semaphore.cpp @ 4068:408ac60c3cf8 framework
integration mainline->framework
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 12 Jun 2020 09:29:03 +0200 |
parents | Core/MultiThreading/Semaphore.cpp@7176ebf08765 Core/MultiThreading/Semaphore.cpp@d25f4c0fa160 |
children | bf7b9edf6b81 |
line wrap: on
line diff
--- a/OrthancFramework/Sources/MultiThreading/Semaphore.cpp Thu Jun 11 18:57:03 2020 +0200 +++ b/OrthancFramework/Sources/MultiThreading/Semaphore.cpp Fri Jun 12 09:29:03 2020 +0200 @@ -20,7 +20,7 @@ * you do not wish to do so, delete this exception statement from your * version. If you delete this exception statement from all source files * in the program, then also delete it here. - * + * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -48,36 +48,36 @@ } } - void Semaphore::Release() + void Semaphore::Release(unsigned int resourceCount) { boost::mutex::scoped_lock lock(mutex_); - availableResources_++; - condition_.notify_one(); + availableResources_ += resourceCount; + condition_.notify_one(); } - void Semaphore::Acquire() + void Semaphore::Acquire(unsigned int resourceCount) { boost::mutex::scoped_lock lock(mutex_); - while (availableResources_ == 0) + while (availableResources_ < resourceCount) { condition_.wait(lock); } - availableResources_--; + availableResources_ -= resourceCount; } - bool Semaphore::TryAcquire() + bool Semaphore::TryAcquire(unsigned int resourceCount) { boost::mutex::scoped_lock lock(mutex_); - if (availableResources_ == 0) + if (availableResources_ < resourceCount) { return false; } - availableResources_--; + availableResources_ -= resourceCount; return true; } }