/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/messagebus/actor/temp_tls_vector.h
40 строк
804 B
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#pragma once #include "thread_extra.h" #include <util/generic/vector.h> #include <util/system/yassert.h> template <typename T, typename TTag = void, template <typename, class> class TVectorType = TVector> class TTempTlsVector { private: struct TTagForTls {}; TVectorType<T, std::allocator<T>>* Vector; public: TVectorType<T, std::allocator<T>>* GetVector() { return Vector; } TTempTlsVector() { Vector = FastTlsSingletonWithTag<TVectorType<T, std::allocator<T>>, TTagForTls>(); Y_ASSERT(Vector->empty()); } ~TTempTlsVector() { Clear(); } void Clear() { Vector->clear(); } size_t Capacity() const noexcept { return Vector->capacity(); } void Shrink() { Vector->shrink_to_fit(); } };