我有一个命名空间,下面的 func1 和 func2 将从不同的线程调用。
#include<thread>
namespace test{
std::mutex mu;
void func1(){
std::lock_guard<mutex>lock(mu);
//the whole function needs to be protected
}
void func2() {
mu.lock();
//some code that should not be executed when func1 is executed
mu.unlock();
//some other code
}
}
Run Code Online (Sandbox Code Playgroud)
使用此互斥锁(一次与 lock_guard 一起使用并在其外部)来保护这些关键部分是否安全?如果不是如何实现这个逻辑?