refine scope lock

wangkuiyi-patch-1
tensor-tang 7 years ago
parent 9cf1f351d2
commit f326b0117e

@ -78,6 +78,7 @@ Variable* Scope::FindVarInternal(const std::string& name) const {
} }
const Scope* Scope::FindScope(const Variable* var) const { const Scope* Scope::FindScope(const Variable* var) const {
std::unique_lock<std::mutex> lock(mutex_);
for (auto& kv : vars_) { for (auto& kv : vars_) {
if (kv.second.get() == var) { if (kv.second.get() == var) {
return this; return this;
@ -127,6 +128,7 @@ void Scope::EraseVars(const std::vector<std::string>& var_names) {
void Scope::Rename(const std::string& origin_name, void Scope::Rename(const std::string& origin_name,
const std::string& new_name) const { const std::string& new_name) const {
std::unique_lock<std::mutex> lock(mutex_);
auto origin_it = vars_.find(origin_name); auto origin_it = vars_.find(origin_name);
PADDLE_ENFORCE(origin_it != vars_.end(), PADDLE_ENFORCE(origin_it != vars_.end(),
"Cannot find original variable with name %s", origin_name); "Cannot find original variable with name %s", origin_name);

Loading…
Cancel
Save