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;
   }
 }