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 | |
| parent | de0eeebe107fc761c301eca66c9e05dd7d599808 (diff) | |
YT_DECLARE_SPIN_LOCK whack-a-mole 2: electric boogaloo, Theatrical Cut
commit_hash:946123c814d23e070516ef5f7d339cf6025547b6
11 files changed, 26 insertions, 23 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(); diff --git a/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp b/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp index a66bd8228ad..b9c71dfabda 100644 --- a/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp +++ b/yt/yt/core/concurrency/unittests/async_rw_lock_ut.cpp @@ -174,7 +174,7 @@ TEST_F(TAsyncReaderWriterLockTest, CancelStressTest) const auto seed = std::random_device()(); Cout << "Seed: " << seed << Endl; - NThreading::TSpinLock spinlock; + YT_DECLARE_SPIN_LOCK(NThreading::TSpinLock, spinlock); int readers = 0; int writers = 0; auto checkInvariants = [&](int deltaReaders, int deltaWriters) { diff --git a/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp b/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp index e6d04d6c976..aaea8b3d8ff 100644 --- a/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp +++ b/yt/yt/core/misc/unittests/async_slru_cache_ut.cpp @@ -1101,7 +1101,7 @@ TEST_P(TAsyncSlruCacheStressTest, Stress) std::uniform_int_distribution<int> capacityDistribution(static_cast<int>(cacheSize * 0.5), static_cast<int>(cacheSize * 1.5)); std::uniform_real_distribution<double> youngerSizeFractionDistribution(0.0, 1.0); - NThreading::TSpinLock lock; + YT_DECLARE_SPIN_LOCK(NThreading::TSpinLock, lock); std::vector<TCountingSlruCache::TInsertCookie> activeInsertCookies; diff --git a/yt/yt/core/rpc/per_key_request_queue_provider.h b/yt/yt/core/rpc/per_key_request_queue_provider.h index 59bb9365d8b..97a7a63c982 100644 --- a/yt/yt/core/rpc/per_key_request_queue_provider.h +++ b/yt/yt/core/rpc/per_key_request_queue_provider.h @@ -52,7 +52,7 @@ private: TKeyFromRequestHeaderCallback KeyFromRequestHeader_; TReconfigurationCallback ReconfigurationCallback_; - NThreading::TReaderWriterSpinLock ThrottlingEnabledFlagsSpinLock_; + YT_DECLARE_SPIN_LOCK(NThreading::TReaderWriterSpinLock, ThrottlingEnabledFlagsSpinLock_); bool WeightThrottlingEnabled_ = true; bool BytesThrottlingEnabled_ = false; }; |
