diff options
| author | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
|---|---|---|
| committer | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
| commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
| tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/jemalloc/reg_zone.cpp | |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/jemalloc/reg_zone.cpp')
| -rw-r--r-- | contrib/libs/jemalloc/reg_zone.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/contrib/libs/jemalloc/reg_zone.cpp b/contrib/libs/jemalloc/reg_zone.cpp new file mode 100644 index 00000000000..6a7b9d69e1f --- /dev/null +++ b/contrib/libs/jemalloc/reg_zone.cpp @@ -0,0 +1,33 @@ +#include <util/system/compiler.h> + +extern "C" void je_zone_register(); + +static volatile bool initialized = false; + +namespace { + struct TInit { + inline TInit() { + if (!initialized) { + je_zone_register(); + initialized = true; + } + } + }; + + void zone_register() { + static TInit init; + } +} + +extern "C" { + void je_assure_zone_register() { + if (Y_LIKELY(initialized)) { + return; + } + + // Even if we have read false "initialized", real init will be syncronized once by + // Meyers singleton in <anonymous>::register_zone(). We could do a few + // redundant "initialized" and singleton creation checks, but no more than that. + zone_register(); + } +} |
