summaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/misc/thread_name.cpp
diff options
context:
space:
mode:
authorlukyan <[email protected]>2024-04-26 02:21:44 +0300
committerlukyan <[email protected]>2024-04-26 02:41:13 +0300
commit5bbe44ff4e12b6d5496d56ecca97b0c4db340509 (patch)
tree511f2114250a8a3da539995a2da71782c3f82883 /library/cpp/yt/misc/thread_name.cpp
parent7bde5f1f7732fb9e9103ac1f54fe1de99bdb6be5 (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.cpp13
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;
}
////////////////////////////////////////////////////////////////////////////////