/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/yt/threading/unittests/spin_wait_ut.cpp
48 строк
1 KB
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
#include <library/cpp/testing/gtest/gtest.h> #include <library/cpp/yt/threading/spin_wait.h> #include <library/cpp/yt/threading/spin_wait_hook.h> #include <thread> #include <mutex> namespace NYT::NThreading { namespace { //////////////////////////////////////////////////////////////////////////////// bool SpinWaitSlowPathHookInvoked; void SpinWaitSlowPathHook( TCpuDuration cpuDelay, const TSourceLocation& /*location*/, ESpinLockActivityKind /*activityKind*/) { SpinWaitSlowPathHookInvoked = true; auto delay = CpuDurationToDuration(cpuDelay); EXPECT_GE(delay, TDuration::Seconds(1)); EXPECT_LE(delay, TDuration::Seconds(5)); } TEST(TSpinWaitTest, SlowPathHook) { static std::once_flag registerFlag; std::call_once( registerFlag, [] { RegisterSpinWaitSlowPathHook(SpinWaitSlowPathHook); }); SpinWaitSlowPathHookInvoked = false; { TSpinWait spinWait(__LOCATION__, ESpinLockActivityKind::ReadWrite); for (int i = 0; i < 1'000'000; ++i) { spinWait.Wait(); } } EXPECT_TRUE(SpinWaitSlowPathHookInvoked); } //////////////////////////////////////////////////////////////////////////////// } // namespace } // namespace NYT::NThreading