summaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/threading/fork_aware_spin_lock.cpp
diff options
context:
space:
mode:
authorbabenko <[email protected]>2025-08-18 09:12:12 +0300
committerbabenko <[email protected]>2025-08-18 09:39:02 +0300
commit4da962b08b5146886840a888e757489ebac0fa63 (patch)
tree335a8b55b1ab3e783bc3ea1a548467ba39d99a59 /library/cpp/yt/threading/fork_aware_spin_lock.cpp
parent38c1f726de8947517b6e9c2ff3ff8425803a0619 (diff)
YT-18571: Refactor traced (fomerly tracked) spin locks and add unittests
commit_hash:2476930524e6179b49fbf312f907bd03413cd8b8
Diffstat (limited to 'library/cpp/yt/threading/fork_aware_spin_lock.cpp')
-rw-r--r--library/cpp/yt/threading/fork_aware_spin_lock.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/library/cpp/yt/threading/fork_aware_spin_lock.cpp b/library/cpp/yt/threading/fork_aware_spin_lock.cpp
index f43411b6d8c..a87cb179f02 100644
--- a/library/cpp/yt/threading/fork_aware_spin_lock.cpp
+++ b/library/cpp/yt/threading/fork_aware_spin_lock.cpp
@@ -10,6 +10,8 @@ void TForkAwareSpinLock::Acquire() noexcept
{
GetForkLock()->AcquireReaderForkFriendly();
SpinLock_.Acquire();
+ // To compensate for one of the above acquisitions.
+ NDetail::RecordSpinLockReleased();
}
bool TForkAwareSpinLock::TryAcquire() noexcept
@@ -21,11 +23,15 @@ bool TForkAwareSpinLock::TryAcquire() noexcept
GetForkLock()->ReleaseReader();
return false;
}
+ // See Acquire.
+ NDetail::RecordSpinLockReleased();
return true;
}
void TForkAwareSpinLock::Release() noexcept
{
+ // See Acquire.
+ NDetail::RecordSpinLockAcquired();
SpinLock_.Release();
GetForkLock()->ReleaseReader();
}