#include <boost/noncopyable.hpp>
#include <boost/thread/mutex.hpp>
-#include <boost/thread/condition.hpp>
+#include <boost/thread/condition_variable.hpp>
namespace caspar {
{
mutable boost::mutex mutex_;
unsigned int permits_;
- boost::condition_variable permits_available_;
+ boost::condition_variable_any permits_available_;
public:
/**
* Constructor.
*
* @param permits The initial number of permits.
*/
- semaphore(unsigned int permits)
+ explicit semaphore(unsigned int permits)
: permits_(permits)
{
}
*/
void release()
{
- boost::mutex::scoped_lock lock(mutex_);
+ boost::unique_lock<boost::mutex> lock(mutex_);
++permits_;
*/
void release(unsigned int permits)
{
- boost::mutex::scoped_lock lock(mutex_);
+ boost::unique_lock<boost::mutex> lock(mutex_);
permits_ += permits;
*/
void acquire()
{
- boost::mutex::scoped_lock lock(mutex_);
+ boost::unique_lock<boost::mutex> lock(mutex_);
while (permits_ == 0u)
{
*/
void acquire(unsigned int permits)
{
- boost::mutex::scoped_lock lock(mutex_);
+ boost::unique_lock<boost::mutex> lock(mutex_);
auto num_acquired = 0u;
while (true)
*/
bool try_acquire()
{
- boost::mutex::scoped_lock lock(mutex_);
+ boost::unique_lock<boost::mutex> lock(mutex_);
if (permits_ == 0u)
return false;
*/
unsigned int permits() const
{
- boost::mutex::scoped_lock lock(mutex_);
+ boost::unique_lock<boost::mutex> lock(mutex_);
return permits_;
}