summaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/threading/fork_aware_spin_lock.cpp
diff options
context:
space:
mode:
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();
}