C++ boost库零基础教程(十六):boost线程timed_mutex

     上篇博客介绍了boost库的mutex, 这次介绍timed_mutex的使用。

      timed_mutex比mutex多增加了两个功能,尝试加锁,持续加锁。

try_lock_for

      如果timed_mutex为上锁,则将它上锁,并返回1,如果已经上锁,则阻塞rel_time时间,并返回0. 代码如下:

#include "pch.h"
#include<boost/thread.hpp>
#include<iostream>

using namespace boost;
using namespace std;


 
//std::timed_mutex  C++标准库已经把boost的timed_mutex融合了,使用boost的使用建议使用::说明

//超时返回的mutex
boost::timed_mutex g_TimedMutex;

void  ThreadFun1()
{
	g_TimedMutex.lock();
	cout << "ThreadFun1先锁住8秒!" << endl;
	this_thread::sleep(posix_time::seconds(8));
	g_TimedMutex.unlock();
	cout << "线程1解锁!" << endl;
}

void  ThreadFun2()
{
	//尝试锁住mutex,如果有其他线程锁住,最多阻塞3秒然后返回0 
	this_thread::sleep(posix_time::seconds(1));
	cout << "线程2尝试加锁" << endl;
	bool  bLock = g_TimedMutex.try_lock_for(chrono::seconds(3));//第3秒时,线程1仍然锁着,所以线程2无法加锁,返回0
	//bool  bLock=g_TimedMutex.tr

猜你喜欢

转载自blog.csdn.net/yao_hou/article/details/103948728