<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp/yt/threading/spin_lock_count.cpp, branch CLI_2.26.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.26.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.26.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2025-08-18T06:39:02Z</updated>
<entry>
<title>YT-18571: Refactor traced (fomerly tracked)  spin locks and add unittests</title>
<updated>2025-08-18T06:39:02Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2025-08-18T06:12:12Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=4da962b08b5146886840a888e757489ebac0fa63'/>
<id>urn:sha1:4da962b08b5146886840a888e757489ebac0fa63</id>
<content type='text'>
commit_hash:2476930524e6179b49fbf312f907bd03413cd8b8
</content>
</entry>
<entry>
<title>YT-21566: Access thread local variables via noinline functions</title>
<updated>2024-04-25T23:41:13Z</updated>
<author>
<name>lukyan</name>
<email>lukyan@yandex-team.com</email>
</author>
<published>2024-04-25T23:21:44Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=5bbe44ff4e12b6d5496d56ecca97b0c4db340509'/>
<id>urn:sha1:5bbe44ff4e12b6d5496d56ecca97b0c4db340509</id>
<content type='text'>
970c33b44a7bd166b2716d86d3d2053dcaf05d7d
</content>
</entry>
<entry>
<title>Active spinlock tracking from pr3151306. Added TracelessGuards to disable mentioned tracking</title>
<updated>2023-11-16T15:51:45Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2023-11-16T14:24:02Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=6b40f0f1060a3e9d54347e52c7dc8fb278e6e86b'/>
<id>urn:sha1:6b40f0f1060a3e9d54347e52c7dc8fb278e6e86b</id>
<content type='text'>
1) Добавлена возможность инструментировать ваш любимый мьютекс/спинлок/что-либо с методами Acquire/Release со схожим смыслом. Делается это засчет методов ```NThreading::NDetail::RecordSpinlockAcquired```/```NThreading::NDetail::RecordSpinlockReleased```. Они отслеживают число захваченных спинлоков.

2) Добавлен макрос ```REGISTER_TRACKED_SPIN_LOCK_CLASS```, который позволяет номинально проверить на этапе компиляции, что данный спинлок отслеживается.

3) Добавлен метод ```NThreading::VerifyNoSpinlockAffinity```, который коркается, если число захваченных спинлоков больше нуля.

4) Добавлены Traceless версии (почти) всех гардов, чтобы можно было не отслеживать конкретную критическую секцию, если очень нужно.

5) Внутри файберного ```WaitUntilSet``` вызывается ```VerifyNoSpinlockAffinity``` -- делать ```WaitFor``` или ```Yield``` внутри отслеживаемых критических секций нельзя. Если очень хочется -- используем TracelessGuard нужного вида.

6) Теперь отслеживаются такие спинлоки и их наследники: ```TSpinLock```, ```TRecursiveSpinLock```, ```TReaderWriterSpinLock```.

7) Зарегистрированы как отслеживаемые все вышеперечисленные спинлоки и их Padded версии.

8) Все эти действия имеют эффект только в дебаг сборке. В релизе вся эта диагностика стирается.
</content>
</entry>
</feed>
