在C#/ Java中,我可以轻松地使任何线程不安全的代码成为线程安全的。我只是介绍特殊的“lockObj”并使用它:
private object lockObj = new object();
void ThreadSafeMethod()
{
lock (lockObj)
{
// work with thread-unsafe code
}
}
(有些人只使用lock (this)
,但这是not recomended)
什么是最简单,最快的C ++等价物?我可以使用C ++ 11。
答案 0 :(得分:3)
如果您可以使用C ++ 11,请使用std :: mutex(如果您不能使用C ++ 11,请使用boost :: mutex)
private:
std::mutex m;
void ThreadSafeMethod()
{
std::lock_guard<std::mutex> lock(m);
// work with thread-unsafe code
}
答案 1 :(得分:0)
Mutex可能是最接近的本机C ++等价物。对于包含外部库的最接近的等价物,您需要一个监视器。
但是,std::lock可能是最直线(提供的代码示例使用std::mutex)。
答案 2 :(得分:0)
如果你有一个C ++编译器或你的操作系统提供的标准原语,你可以使用std::lock,例如:Windows上的WaitForSingleObject或Unix / Linux上的pthread_mutex_lock。