第一步:添加头文件
#include <boost/thread/shared_mutex.hpp>
#include <boost/thread/locks.hpp>
第二步:声明全局Mutex
boost::shared_mutex g_mutex;
第三步:使用独占锁
void func()
{
boost::unique_lock<boost::shared_mutex> lock(g_mutex); //实例化时,顺便Lock
//通过修改“实例化”时的参数,你也可以显示Lock。
...这里省略若干行代码...
}
第三步:使用共享锁
void func()
{
boost::shared_lock<boost::shared_mutex> lock(g_mutex);
...这里省略若干行代码...
}
备注:
[1]你可以在Lock对象构造时,使用boost::defer_lock类参数。
显示调用lock、Unlock、try_lock、timed_lock等成员函数,来更灵活的Lock。
[2]缺省使用,则在出函数作用域时,自动Unlock。这里的例子就是采用这种方式。