//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();
/*-----------------------------------------------------编译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();