【发布时间】:2016-06-10 05:19:57
【问题描述】:
我有一个在多线程环境中调用的函数。它有一个本地创建的对象。我们需要同步本地对象变量吗?
例如
void myFun() {
SomeClass obj = SomeClass();
// This object is then passed to some other method.
}
我们是否需要在上面本地创建的对象(即 obj)上获得互斥锁?使其在多线程环境中正常工作。
}
【问题讨论】:
-
在堆栈上创建的对象(即本地创建的对象)不需要锁定。每个调用该函数的线程都将拥有自己单独的对象副本。
-
对象是全局的还是本地的都没有关系。重要的是,如果您从不同的线程访问一个对象,并且这些访问中至少有一些可以修改该对象,那么您必须同步它们。
标签: c++ multithreading mutex