]> git.sesse.net Git - casparcg/blobdiff - common/semaphore.h
Move from boost::thread to std::thread for nearly everything.
[casparcg] / common / semaphore.h
index ad6de09f829577eccf3d16bb94484839e9988bc7..c69960b3ed69ee0bafe1b871a6bacb36c92d7df1 100644 (file)
 #include <cmath>
 
 #include <boost/noncopyable.hpp>
-#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition_variable.hpp>
 
 #include <map>
+#include <mutex>
 #include <queue>
 #include <functional>
 
+#include <boost/thread/condition_variable.hpp>
+
 namespace caspar {
 
 /**
@@ -38,7 +39,7 @@ namespace caspar {
  */
 class semaphore : boost::noncopyable
 {
-       mutable boost::mutex                                                                            mutex_;
+       mutable std::mutex                                                                              mutex_;
        unsigned int                                                                                            permits_;
        boost::condition_variable_any                                                           permits_available_;
        std::map<unsigned int, std::queue<std::function<void()>>>       callbacks_per_requested_permits_;
@@ -58,7 +59,7 @@ public:
         */
        void release()
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
 
                ++permits_;
 
@@ -73,7 +74,7 @@ public:
         */
        void release(unsigned int permits)
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
 
                permits_ += permits;
 
@@ -87,7 +88,7 @@ public:
         */
        void acquire()
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
 
                while (permits_ == 0u)
                {
@@ -105,7 +106,7 @@ public:
         */
        void acquire(unsigned int permits)
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
                auto num_acquired = 0u;
 
                while (true)
@@ -132,7 +133,7 @@ public:
        */
        void acquire(unsigned int permits, std::function<void()> acquired_callback)
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
 
                if (permits_ >= permits)
                {
@@ -157,7 +158,7 @@ public:
        template <typename Rep, typename Period>
        bool try_acquire(unsigned int permits, const boost::chrono::duration<Rep, Period>& timeout)
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
                auto num_acquired = 0u;
 
                while (true)
@@ -191,7 +192,7 @@ public:
         */
        bool try_acquire()
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
 
                if (permits_ == 0u)
                        return false;
@@ -209,7 +210,7 @@ public:
         */
        unsigned int permits() const
        {
-               boost::unique_lock<boost::mutex> lock(mutex_);
+               std::unique_lock<std::mutex> lock(mutex_);
 
                return permits_;
        }