boost使用(七)

今天带来线程中共享锁的使用,其实内部实现就像读写锁一样,不过这里我们可以不用太多关心是怎么实现的,我关注下使用就好,现在加入今天的代码:

#include #include #include #include #include void wait(int seconds) { boost::this_thread::sleep(boost::posix_time::seconds(seconds)); } boost::shared_mutex mutex; std::vector random_numbers; void fill() { std::srand(static_cast(std::time(0))); for (int i = 0; i lock(mutex); random_numbers.push_back(std::rand()); lock.unlock(); wait(1); } } void print() { for (int i = 0; i lock(mutex); std::cout lock(mutex); sum += random_numbers.back(); } } int main() { boost::thread t1(fill); boost::thread t2(print); boost::thread t3(count); t1.join(); t2.join(); t3.join(); std::cout
好我们看到今天创建了3个线程,一个填充,一个计数,一个输出的线程,关心下程序的运行结果吧:
boost使用(七)

好了结果大家也看到了,让我们来关注下今天代码的变化吧,shared_mutex这个是今天新用到的锁,shared_lock是今天我们新用到的锁,这个锁表示,此线程使用的时候其他线程也可对共享变量进行读取,但是不能进行写入的操作,当然你也可以使其变成读取时候不允许操作,写入时允许一起进行操作,但是这不是一般程序期望的东西,呵呵,总之就是你希望其他线程也可以操作就用shared 否者用unique。好了不废话了。希望大家喜欢今天带来的东西。

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力
上一篇:二十进制数的加法
下一篇:隐藏 标题栏 和 状态栏隐藏(全屏)
相关文章

boost xpressive

boost tokenizer

boost::shared_ptr内部结构

Boost::asio io_service 实现分析

Boost::asio范例分析 服务端

Boost::asio范例分析 客户端

boost log库 使用九

boost使用(六)

boost使用(八)

使用TDI与WinSock进行客户端服务器编程

图文推荐
boost使用(七)
16. Dubbo原理解析-
Chrome扩展,应用开发
boost使用(七)
跨平台移动框架iMAG开
boost使用(七)
2014年7月编程语言排

分类:默认分类 时间:2012-12-20 人气:6
本文关键词:
分享到:

相关文章

  • Visual Studio 2013 编译 boost-1_56_0_b1 2012-03-21

    1、首先下载源代码包:http://www.boost.org/users/history/version_1_56_0.html 目前最新版本 2、解压缩到D:\boost-1_56_0_b1目录下 3、点击 D:\boost-1_56_0_b1目录下 bootstrap.bat 批处理文件 会生成bjam.exe和project-config.jam这两个文件 4、在开始菜单中 找到 Visual Studio 2013---Visual Studio Tools----VS2013 开发人

  • Speed Booster转接环全画幅镜头实拍评测 2012-08-29

      Metabones公司推出了一款独一无二的个性转接环产品Speed Booster,通过这款转接环可以在APS-C传感器上获得与全画幅传感器接近视场大小,光圈也随之提高一挡。   为什么需要全画幅传感器拍照?全画幅传感器真的会提高亮度吗?转接以后对画质有什么影响?组合以后是什么样子?带着这些疑问,我开始利用手中的NEX-6对这款前所未见的转接环产品进行实拍测试。   成像原理   索尼NEX、富士X系列的无反相机搭载的都是APS-C格式传感器。相对于全画幅传感器,APS-C传感器尺寸更小,在

  • 基于boost::asio封装搭建的简单服务器 2013-02-07

    经过一天的简单学习,尝试自己写一个简单的服务器,能够实现以下三大回调功能:onConnect onMessage onClose 下面直接贴出代码 1.BaseServer抽象类 BaseServer.h /* name:BaseServer use:the basest server author:hezijian([email protected]) */ #ifdef _MSC_VER #define _WIN32_WINNT 0x0501 #endif #ifndef _BASE_SE

  • 基于boost实现的共享内存版HashMap 2013-03-13

    #include #include #include #include #include int main (int argc, char *argv[]) { typedef int KeyType; typedef float MappedType; typedef std::pair ValueType; typedef boost::interprocess::allocator ShmAlloc; typedef boost::unordered_map, std::equal_to,

  • boost::xml_parser 读取xml 2013-05-24

    boost::xml_parser 处理xml ---------debug_settings.xml-------- [html] <root> <strage name="asd" alias="13" classId="13.22">r <id>12</id> <name>"jack"</name> <accout>"0001"</accout> </strage> <stra

  • boost.property_tree 2013-08-04

    //made by davidsu33 //boost.property_tree是一个保存了多个属性值的树形数据结构 //boost.property_tree可以解析xml ini json和info四种格式的文本 #include #include #include #include #include #include using namespace std; void putline(const char * str) { cout("conf.theme"); int guiID =

  • boost::serialization 拆分serialize函数 2013-08-13

    在前篇 boost::serialization 用基类指针转存派生类(错误多多,一波三折)文中我们都是使用serialize函数来实现序列化,其代码格式如下: private: friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { ar & BOOST_SERIALIZATION_NVP(name_); ar

  • boost使用(三) 2014-05-16

    今天早上到公司,没有其他的事情,先给大家带来一些boost库的使用方法,今天带来的是线程的打断及其使用。高手请直接略过本文,新手请继续。继续保持我一贯的风格,简洁的代码。 附上代码: #include #include void wait(int seconds) { boost::this_thread::sleep(boost::posix_time::seconds(seconds)); } void thread() { try { for (int i = 0; i 同样的附上截图:

  • boost准模板库内存管理中pool和object_pool的使用 2014-09-27

    首先,在写程序之前,必须修改一个问题,要不然,无法链接: boost安装目录:D:\boost。 找到D:\boost\boost_1_55_0\include\boost-1_53\boost\system\error_code.hpp。 在error_code.hpp文件开头添加宏定义:#define BOOST_ERROR_CODE_HEADER_ONLY。 然后,下面就是我们的pool的示例: #define BOOST_ALL_NO_LIB #include #include //ob

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.160 (s). 10 q(s)