1. 程式人生 > >c++ 一種給任意函式體加鎖的方法

c++ 一種給任意函式體加鎖的方法

class MyClass
	{
	public:
		MyClass() = default;
		~MyClass() = default;

		void funcA(int param)
		{
			withMutex([&] {
				std::cout << param + 2<< std::endl;
			});
		}

		void funcB( int param)
		{
			withMutex([&] {
				std::cout << param +3<< std::endl;
			});
		}
	private:
		//將被保護的函式體封裝到lamda表示式當中。
		void withMutex(std::function<void()> && fn)
		{
			std::lock_guard<std::mutex> lock(mutex);
			fn();
		}
std::mutex mutex; };
MyClass obj;
	obj.funcA(0);
	obj.funcB(0);
執行結果2,3