博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
boost 轻量级信号量
阅读量:6211 次
发布时间:2019-06-21

本文共 540 字,大约阅读时间需要 1 分钟。

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

转载地址:http://wcsja.baihongyu.com/

你可能感兴趣的文章
eclipse 按装lombok与注解说明
查看>>
Java类集-list
查看>>
Mysql的timestamp类型,自动记录数据的更新时间
查看>>
JConsole使用手冊具体解释
查看>>
Atitti 创业团队vs打工的团队 attilax总结
查看>>
Redis3.0--集群安装部署
查看>>
validationEngine 表单验证插件使用
查看>>
java注解学习笔记
查看>>
vuex所有核心概念完整解析State Getters Mutations Actions
查看>>
chrome 浏览器插件开发
查看>>
010-Hadoop Hive sql语法详解5-HiveQL与SQL区别
查看>>
(转)Hibernate框架基础——Java对象持久化概述
查看>>
myeclipse配置内存
查看>>
浏览器的渲染原理简介
查看>>
oracle与mysql与sqlserver的分页
查看>>
整合大量开源库项目(五)跳动的TextView JumpingBeans,良好体验的滚动条ConvenientBanner...
查看>>
IntelliJ Idea 常用快捷键列表
查看>>
使用Spring定时任务并且通过AOP监控任务执行情况
查看>>
ASP.NET MVC做的微信WEBAPP中调用微信JSSDK扫一扫
查看>>
牛腩代码生成器
查看>>