c++ 一種給任意函式體加鎖的方法
阿新 • • 發佈:2019-01-22
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