阅读背景:

share_ptr的线程安全读写方式

来源:互联网 
class T { 
public:
	int get() { return t; }
	void set(int num) { t = num; }
	T():t(1) {}
private:
	int t; };
std::mutex g_mut;
std::shared_ptr<T> g_ptr;
void func(const std::shared_ptr<T>& pt) { std::cout<<pt->get(); }
void setFunc(const std::shared_ptr<T>& pt,int num) { pt->set(num); }
void read()
{
	std::shared_ptr<T> localPtr;
	{
		std::lock_guard<std::mutex> lock(g_mut);
		localPtr = g_ptr;
	}
	func(localPtr);
}
void write(int num)
{
	std::shared_ptr<T> newPtr(new T);
	{
		std::lock_guard<std::mutex> lock(g_mut);
		g_ptr = newPtr;
	}
	
	setFunc(newPtr, num);
}class T { 
public:
	int get() { return t; }
	vo



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: