C++学习 boost学习之-Synchronization
来源:互联网 发布:乐乎 编辑:程序博客网 时间:2024/06/08 07:16
要点:
1 boost提供了如下lock模板类,以mutex类型作为模板参数
- Class template
lock_guard
- Class template
unique_lock
- Class template
shared_lock
- Class template
upgrade_lock
- Class template
upgrade_to_unique_lock
- Mutex-specific class
scoped_try_lock
2 boost提供了如下mutex类型,分别用于上面的lock模板类的参数
- Class
mutex
- Typedef
try_mutex
- Class
timed_mutex
- Class
recursive_mutex
- Typedef
recursive_try_mutex
- Class
recursive_timed_mutex
- Class
shared_mutex
- Class
condition_variable
- Class
condition_variable_any
- Typedef
condition
4 仅初始化一次问题
<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">thread</span><span class="special">/</span><span class="identifier">once</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
<span class="identifier">boost</span><span class="special">::</span><span class="identifier">once_flag</span> <span class="identifier">f</span><span class="special">=</span><span class="identifier">BOOST_ONCE_INIT</span><span class="special">;</span>
<span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Callable</span><span class="special">></span><span class="keyword">void</span> <span class="identifier">call_once</span><span class="special">(</span><span class="identifier">once_flag</span><span class="special">&</span> <span class="identifier">flag</span><span class="special">,</span><span class="identifier">Callable</span> <span class="identifier">func</span><span class="special">);</span>
<span class="keyword">void</span> <span class="identifier">call_once</span><span class="special">(</span><span class="keyword">void</span> <span class="special">(*</span><span class="identifier">func</span><span class="special">)(),</span><span class="identifier">once_flag</span><span class="special">&</span> <span class="identifier">flag</span><span class="special">);</span>两个函数,一个flag,用于程序中仅调用一次func
5 Barriers
<span class="keyword">class</span> <span class="identifier">barrier</span><span class="special">{</span><span class="keyword">public</span><span class="special">:</span> <span class="identifier">barrier</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">count</span><span class="special">);</span> <span class="special">~</span><span class="identifier">barrier</span><span class="special">();</span> <span class="keyword">bool</span> <span class="identifier">wait</span><span class="special">();</span><span class="special">};</span>
障碍是一个同步点,在wait的地方,必须count个线程都执行到该位置,才开始wait后面的内容;
6 futures
应用场合是:一个线程发出命令,另外一个线程执行命令,发出命令线程通过future获得命令的执行结果;详细内容参考分布式网络编程内容《面向模式的软件体系结构卷2》
相关的类有boost::promise
or a boost::packaged_task
;
总结,同步内容很多,详细参考boost文档;该内容很实用;
0 0
- boost 学习之-Synchronization
- C++学习 boost学习之-Synchronization
- Java学习之线程同步(Synchronization)
- Boost学习之Boost简介
- 【boost学习】之boost::bind
- boost学习之Boost.Lambda
- 学习boost之lexical_cast
- 学习boost之format
- 学习boost之filesystem
- boost学习之function
- boost之spirit学习
- boost学习之-scoped_ptr
- boost学习之-scoped_array
- boost学习之-shared_ptr
- boost学习之-shared_array
- boost学习之-intrusive_ptr
- boost学习之-weak_ptr
- boost学习之-polymorphic_cast
- Move.c && Move.h
- 指针函数 和 函数指针 指针为参数时使用堆内存
- SQL表关联中的逻辑与效率(二)
- VC ACTIVEX 控件网页打开错误8007007e
- SQL语句
- C++学习 boost学习之-Synchronization
- 第四部分:将状态数据添加到ToasterService实现(JMX Access)-数我的面包!
- java判断字符串中是否含有中文字符
- iOS动画——ViewAnimations
- 图表插件汇总
- 都是回车惹的祸- Redhat中cron之奇异行为索源
- Objective C运行时(runtime)技术的几个要点总结
- 左偏树 hdu1512
- dbvisualizer客户端执行存储过程和函数(方法)注意事项