diff options
| author | dann239 <[email protected]> | 2026-04-29 13:05:49 +0300 |
|---|---|---|
| committer | dann239 <[email protected]> | 2026-04-29 13:36:58 +0300 |
| commit | ecec96bec80b2bb134672a52de4d67eca8cd480a (patch) | |
| tree | 8c5cf1a30bc9e204f24e53032e64ab00c383387b /library/cpp/yt | |
| parent | de0eeebe107fc761c301eca66c9e05dd7d599808 (diff) | |
YT_DECLARE_SPIN_LOCK whack-a-mole 2: electric boogaloo, Theatrical Cut
commit_hash:946123c814d23e070516ef5f7d339cf6025547b6
Diffstat (limited to 'library/cpp/yt')
| -rw-r--r-- | library/cpp/yt/threading/at_fork.cpp | 3 | ||||
| -rw-r--r-- | library/cpp/yt/threading/fork_aware_rw_spin_lock.h | 4 | ||||
| -rw-r--r-- | library/cpp/yt/threading/fork_aware_spin_lock.h | 4 | ||||
| -rw-r--r-- | library/cpp/yt/threading/rw_spin_lock.h | 4 | ||||
| -rw-r--r-- | library/cpp/yt/threading/spin_lock.h | 4 | ||||
| -rw-r--r-- | library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp | 4 | ||||
| -rw-r--r-- | library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp | 12 | ||||
| -rw-r--r-- | library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp | 8 |
8 files changed, 23 insertions, 20 deletions
diff --git a/library/cpp/yt/threading/at_fork.cpp b/library/cpp/yt/threading/at_fork.cpp index bcf05f0c3b8..040047646ea 100644 --- a/library/cpp/yt/threading/at_fork.cpp +++ b/library/cpp/yt/threading/at_fork.cpp @@ -46,7 +46,7 @@ public: private: DECLARE_LEAKY_SINGLETON_FRIEND() - TWriterStarvingRWSpinLock ForkLock_; + YT_DECLARE_SPIN_LOCK(TWriterStarvingRWSpinLock, ForkLock_); struct TAtForkHandlerSet { @@ -137,4 +137,3 @@ TWriterStarvingRWSpinLock* GetForkLock() //////////////////////////////////////////////////////////////////////////////// } // namespace NYT::NThreading - diff --git a/library/cpp/yt/threading/fork_aware_rw_spin_lock.h b/library/cpp/yt/threading/fork_aware_rw_spin_lock.h index 1fa1dd737b4..9a23b1f3c42 100644 --- a/library/cpp/yt/threading/fork_aware_rw_spin_lock.h +++ b/library/cpp/yt/threading/fork_aware_rw_spin_lock.h @@ -15,8 +15,8 @@ public: TForkAwareReaderWriterSpinLock(const TForkAwareReaderWriterSpinLock&) = delete; TForkAwareReaderWriterSpinLock& operator =(const TForkAwareReaderWriterSpinLock&) = delete; - // TODO(babenko): make use of location. - explicit constexpr TForkAwareReaderWriterSpinLock(const ::TSourceLocation& /*location*/) + explicit constexpr TForkAwareReaderWriterSpinLock(const ::TSourceLocation& location) + : SpinLock_(location) { } void AcquireReader() noexcept; diff --git a/library/cpp/yt/threading/fork_aware_spin_lock.h b/library/cpp/yt/threading/fork_aware_spin_lock.h index 99acf6ec0ec..c4a6ae2ba85 100644 --- a/library/cpp/yt/threading/fork_aware_spin_lock.h +++ b/library/cpp/yt/threading/fork_aware_spin_lock.h @@ -21,8 +21,8 @@ public: constexpr TForkAwareSpinLock() = default; - // TODO(babenko): make use of location. - explicit constexpr TForkAwareSpinLock(const ::TSourceLocation& /*location*/) + explicit constexpr TForkAwareSpinLock(const ::TSourceLocation& location) + : SpinLock_(location) { } void Acquire() noexcept; diff --git a/library/cpp/yt/threading/rw_spin_lock.h b/library/cpp/yt/threading/rw_spin_lock.h index 0b29e0c7073..a530d556b76 100644 --- a/library/cpp/yt/threading/rw_spin_lock.h +++ b/library/cpp/yt/threading/rw_spin_lock.h @@ -181,7 +181,9 @@ using TReaderWriterSpinLock = NDetail::TUncheckedReaderWriterSpinLock; //! A variant of TReaderWriterSpinLock occupying the whole cache line. class alignas(CacheLineSize) TPaddedReaderWriterSpinLock : public TReaderWriterSpinLock -{ }; +{ + using TReaderWriterSpinLock::TReaderWriterSpinLock; +}; //////////////////////////////////////////////////////////////////////////////// diff --git a/library/cpp/yt/threading/spin_lock.h b/library/cpp/yt/threading/spin_lock.h index f090f306f68..a69b83a3001 100644 --- a/library/cpp/yt/threading/spin_lock.h +++ b/library/cpp/yt/threading/spin_lock.h @@ -70,7 +70,9 @@ private: //! A variant of TSpinLock occupying the whole cache line. class alignas(CacheLineSize) TPaddedSpinLock : public TSpinLock -{ }; +{ + using TSpinLock::TSpinLock; +}; //////////////////////////////////////////////////////////////////////////////// diff --git a/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp b/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp index b5b75d75fff..f5a36880944 100644 --- a/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp +++ b/library/cpp/yt/threading/unittests/recursive_spin_lock_ut.cpp @@ -12,7 +12,7 @@ namespace { TEST(TRecursiveSpinLockTest, SingleThread) { - TRecursiveSpinLock lock; + YT_DECLARE_SPIN_LOCK(TRecursiveSpinLock, lock); EXPECT_FALSE(lock.IsLocked()); EXPECT_TRUE(lock.TryAcquire()); EXPECT_TRUE(lock.IsLocked()); @@ -31,7 +31,7 @@ TEST(TRecursiveSpinLockTest, SingleThread) TEST(TRecursiveSpinLockTest, TwoThreads) { - TRecursiveSpinLock lock; + YT_DECLARE_SPIN_LOCK(TRecursiveSpinLock, lock); TEvent e1, e2, e3, e4, e5, e6, e7; std::jthread t1([&] { diff --git a/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp b/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp index e987a967a83..c3fbb5cc0b1 100644 --- a/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp +++ b/library/cpp/yt/threading/unittests/rw_spin_lock_ut.cpp @@ -17,7 +17,7 @@ TEST(TReaderWriterSpinLockTest, WriterPriority) std::latch latch(readerThreads + 1); std::atomic<size_t> finishedCount = {0}; - TReaderWriterSpinLock lock; + YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock); volatile std::atomic<ui32> x = {0}; @@ -51,7 +51,7 @@ TEST(TReaderWriterSpinLockTest, WriterPriority) TEST(TReaderWriterSpinLockDeathTest, ReaderReentrance) { - TReaderWriterSpinLock lock; + YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock); EXPECT_DEBUG_DEATH({ auto guard1 = ReaderGuard(lock); @@ -61,7 +61,7 @@ TEST(TReaderWriterSpinLockDeathTest, ReaderReentrance) TEST(TReaderWriterSpinLockDeathTest, MixedReentrance) { - NDetail::TCheckedReaderWriterSpinLock lock; + YT_DECLARE_SPIN_LOCK(NDetail::TCheckedReaderWriterSpinLock, lock); EXPECT_DEATH({ auto guard1 = ReaderGuard(lock); @@ -71,7 +71,7 @@ TEST(TReaderWriterSpinLockDeathTest, MixedReentrance) TEST(TReaderWriterSpinLockDeathTest, TryReaderReentrance) { - TReaderWriterSpinLock lock; + YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock); EXPECT_DEBUG_DEATH({ auto guard = ReaderGuard(lock); @@ -81,7 +81,7 @@ TEST(TReaderWriterSpinLockDeathTest, TryReaderReentrance) TEST(TReaderWriterSpinLockDeathTest, TryWriterReentrance) { - TReaderWriterSpinLock lock; + YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock); EXPECT_DEBUG_DEATH({ auto guard = WriterGuard(lock); @@ -91,7 +91,7 @@ TEST(TReaderWriterSpinLockDeathTest, TryWriterReentrance) TEST(TReaderWriterSpinLockDeathTest, ReleaseUnacquiredLock) { - TReaderWriterSpinLock lock; + YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock); EXPECT_DEBUG_DEATH({ lock.ReleaseReader(); diff --git a/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp b/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp index 1534fe2c7d5..7e71ca55c2c 100644 --- a/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp +++ b/library/cpp/yt/threading/unittests/spin_lock_count_ut.cpp @@ -15,7 +15,7 @@ namespace { TEST(TSpinLockCountTest, SpinLock) { EXPECT_EQ(GetActiveSpinLockCount(), 0); - TSpinLock lock; + YT_DECLARE_SPIN_LOCK(TSpinLock, lock); auto guard = Guard(lock); EXPECT_EQ(GetActiveSpinLockCount(), 1); guard.Release(); @@ -25,7 +25,7 @@ TEST(TSpinLockCountTest, SpinLock) TEST(TSpinLockCountTest, RecursiveSpinLock) { EXPECT_EQ(GetActiveSpinLockCount(), 0); - TRecursiveSpinLock lock; + YT_DECLARE_SPIN_LOCK(TRecursiveSpinLock, lock); auto guard1 = Guard(lock); EXPECT_EQ(GetActiveSpinLockCount(), 1); auto guard2 = Guard(lock); @@ -39,7 +39,7 @@ TEST(TSpinLockCountTest, RecursiveSpinLock) TEST(TSpinLockCountTest, ForkAwareSpinLock) { EXPECT_EQ(GetActiveSpinLockCount(), 0); - TForkAwareSpinLock lock; + YT_DECLARE_SPIN_LOCK(TForkAwareSpinLock, lock); auto guard = Guard(lock); EXPECT_EQ(GetActiveSpinLockCount(), 1); guard.Release(); @@ -49,7 +49,7 @@ TEST(TSpinLockCountTest, ForkAwareSpinLock) TEST(TSpinLockCountTest, RWSpinLock) { EXPECT_EQ(GetActiveSpinLockCount(), 0); - TReaderWriterSpinLock lock; + YT_DECLARE_SPIN_LOCK(TReaderWriterSpinLock, lock); auto readerGuard = ReaderGuard(lock); EXPECT_EQ(GetActiveSpinLockCount(), 1); readerGuard.Release(); |
