BOOST之Thread库学习

本文深入探讨了Boost的Thread库,包括如何编译和使用thread库,详细介绍了互斥量的各种类型及其用法,如Mutex、Recursive_mutex等。此外,文章还讲解了线程对象的创建、启动、join和detach,以及bind、function的使用。同时,文章讨论了条件变量、中断线程、线程组、future范式等高级特性,提供了丰富的示例代码来帮助理解。
摘要由CSDN通过智能技术生成
//Boost并发编程之thread
/*-----------------------------------------------------编译thread库
在工程中嵌入源码的方式:
直接在cpp文件中包含thread库的实现代码如下
#define BOOST_DATE_TIME_SOURCE
#define BOOST_THREAD_NO_LIB
#inclue<boost\thread.hpp>
#ifdef _MSC_VER              //windows线程
extern "C" void tss_cleanup_implemented(void)()//一个必须的函数window下的thread库没有实现自动tss功能
#include<libs\thread\src\win32\thread.cpp>
#incldue<libs\thread\src\win32\tss_dll.cpp>
#include<libs\thread\src\win32\tss_pe_cpp>
#else
#include<lib\thread\src\pthread\thread.cpp>
#include<libs\thread\src\pthread\once.cpp>
#endif
-------------------------------------------------使用thread库
#define BOOST_DATE_TIME_SOURCE
#define BOOST_THREAD_NO_LIB
#include <boost\threaad.hpp>
--------------------------------------------时间功能
为了更好的表述时间线程的相关含义thread库重新定义新的时间类型system_time 他是posix::ptime同义词
thread库也提供一个自由函数get_system_time()它调用microse_clock类方便地获取当前utc时间
-------------------------------------------互斥量
Thread提供7中互斥量类型(实际上只有5中)
(1) Mutex:独占式的互斥量,最简单的一种互斥量类型
(2) Try_mutex:mutex同义为兼容以前版本
(3) Time_mutex:独占式,提供超时锁定功能
(4) Recursive_mutex:递归互斥量可以多次锁定
(5) Recursive_try_mutex:它是(4)的同义词为兼容
(6) Recursive_timed_mutex:他是递归式互斥量基本功能同(4)但提供超时锁定
(7) Share_mutex:multiple-reader/single-writer型的共享互斥锁(又称读写锁)
---------------------------------------互斥量的用法
直接使用mutex的成员函数来锁定互斥量不够方便而且在发生异常导致退出作用的情况下很可能忘记解除所覅那个;因此thread库提供一系列RAII型的lock_guard类由于辅助锁定互斥量。他们在构造时锁定互斥量在析构时自动解锁从而保证避免忘记解锁,就想一个智能指针
Mutex类使用内部类型定义的scoped_lock和scope_try_lock定义两种guard对象分别对应执行lock()和try_lock()
不适用guard对象:
Mutex mu;
Try{
Mu.lock()
Cout<<”some operation”<<endl;
Mu.unlock
}
Catch(….)
{
Mu.unlock();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值