diff options
Diffstat (limited to 'library/cpp/yt/threading/fork_aware_spin_lock.cpp')
| -rw-r--r-- | library/cpp/yt/threading/fork_aware_spin_lock.cpp | 6 |
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(); } |
