diff options
| author | lukyan <[email protected]> | 2024-04-26 02:21:44 +0300 |
|---|---|---|
| committer | lukyan <[email protected]> | 2024-04-26 02:41:13 +0300 |
| commit | 5bbe44ff4e12b6d5496d56ecca97b0c4db340509 (patch) | |
| tree | 511f2114250a8a3da539995a2da71782c3f82883 /library/cpp/yt/misc/thread_name.cpp | |
| parent | 7bde5f1f7732fb9e9103ac1f54fe1de99bdb6be5 (diff) | |
YT-21566: Access thread local variables via noinline functions
970c33b44a7bd166b2716d86d3d2053dcaf05d7d
Diffstat (limited to 'library/cpp/yt/misc/thread_name.cpp')
| -rw-r--r-- | library/cpp/yt/misc/thread_name.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/library/cpp/yt/misc/thread_name.cpp b/library/cpp/yt/misc/thread_name.cpp index d59043db51e..bb1737b08ad 100644 --- a/library/cpp/yt/misc/thread_name.cpp +++ b/library/cpp/yt/misc/thread_name.cpp @@ -29,19 +29,18 @@ TThreadName::TThreadName(const TString& name) //////////////////////////////////////////////////////////////////////////////// // This function uses cached TThread::CurrentThreadName() result -TThreadName GetCurrentThreadName() +YT_PREVENT_TLS_CACHING TThreadName GetCurrentThreadName() { - static YT_THREAD_LOCAL(TThreadName) ThreadName; - auto& threadName = GetTlsRef(ThreadName); + static thread_local TThreadName ThreadName; - if (threadName.Length == 0) { + if (ThreadName.Length == 0) { if (auto name = TThread::CurrentThreadName()) { auto length = std::min<int>(TThreadName::BufferCapacity - 1, name.length()); - threadName.Length = length; - ::memcpy(threadName.Buffer.data(), name.data(), length); + ThreadName.Length = length; + ::memcpy(ThreadName.Buffer.data(), name.data(), length); } } - return threadName; + return ThreadName; } //////////////////////////////////////////////////////////////////////////////// |
