首页 > 代码库 > boost 轻量级信号量
boost 轻量级信号量
#include <boost/thread/condition_variable.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/lock_types.hpp>
#include <boost/thread.hpp>
class semaphore
{
unsigned int count_;
boost::mutex mutex_;
boost::condition_variable condition_;
public:
explicit semaphore(unsigned int initial) : count_(initial){}
void signal()
{
{
boost::lock_guard<boost::mutex> lock(mutex_);
++count_;
}
condition_.notify_one();
}
void wait()
{
boost::unique_lock<boost::mutex> lock(mutex_);
while (count_ == 0)
{
condition_.wait(lock);
}
--count_;
}
};
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。