Avoid using a static mutex to prevent initialization-order-fiasco.
PiperOrigin-RevId: 162678155
This commit is contained in:
parent
0264e10b78
commit
f199febfa8
@ -32,7 +32,10 @@ tensorflow::gtl::FlatMap<tensorflow::StringPiece, void*>* BuiltinMap() {
|
|||||||
return builtin_map;
|
return builtin_map;
|
||||||
}
|
}
|
||||||
|
|
||||||
tensorflow::mutex builtin_map_mutex(tensorflow::LINKER_INITIALIZED);
|
tensorflow::mutex* BuiltinMapMutex() {
|
||||||
|
static tensorflow::mutex* builtin_map_mutex = new tensorflow::mutex;
|
||||||
|
return builtin_map_mutex;
|
||||||
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
namespace xla {
|
namespace xla {
|
||||||
@ -73,7 +76,7 @@ Registrar::Registrar(tensorflow::StringPiece name, void* function_pointer,
|
|||||||
CHECK_EQ(tensorflow::strings::StrCat(kXlaCpuRuntimeSymbolPrefix, base_name),
|
CHECK_EQ(tensorflow::strings::StrCat(kXlaCpuRuntimeSymbolPrefix, base_name),
|
||||||
name);
|
name);
|
||||||
|
|
||||||
tensorflow::mutex_lock lock(builtin_map_mutex);
|
tensorflow::mutex_lock lock(*BuiltinMapMutex());
|
||||||
InsertOrDie(BuiltinMap(), name, function_pointer);
|
InsertOrDie(BuiltinMap(), name, function_pointer);
|
||||||
}
|
}
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
@ -81,7 +84,7 @@ Registrar::Registrar(tensorflow::StringPiece name, void* function_pointer,
|
|||||||
void* ResolveSymbol(tensorflow::StringPiece name) {
|
void* ResolveSymbol(tensorflow::StringPiece name) {
|
||||||
CHECK(name.starts_with(kXlaCpuRuntimeSymbolPrefix));
|
CHECK(name.starts_with(kXlaCpuRuntimeSymbolPrefix));
|
||||||
|
|
||||||
tensorflow::mutex_lock lock(builtin_map_mutex);
|
tensorflow::mutex_lock lock(*BuiltinMapMutex());
|
||||||
const auto& builtin_map = *BuiltinMap();
|
const auto& builtin_map = *BuiltinMap();
|
||||||
auto lookup_iterator = builtin_map.find(name);
|
auto lookup_iterator = builtin_map.find(name);
|
||||||
return lookup_iterator == builtin_map.end() ? nullptr
|
return lookup_iterator == builtin_map.end() ? nullptr
|
||||||
|
Loading…
Reference in New Issue
Block a user