/
GraphTreeHeap
/
museumdb2
Обзор
Документация
Войти
/
GraphTreeHeap
/
museumdb2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
util/thread_guard.h
41 строка
1 KB
Levi Tamasi
Introduce a ThreadGuard class and use it in ExternalSSTFileTest.PickedLevelBug (#8112)
26 мар 2021, 08:08
26 мар 2021, 08:08
303cb23
Код
Авторство
О чём код?
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved. // This source code is licensed under both the GPLv2 (found in the // COPYING file in the root directory) and Apache 2.0 License // (found in the LICENSE.Apache file in the root directory). #pragma once #include "port/port.h" #include "rocksdb/rocksdb_namespace.h" namespace ROCKSDB_NAMESPACE { // Resource management object for threads that joins the thread upon // destruction. Has unique ownership of the thread object, so copying it is not // allowed, while moving it transfers ownership. class ThreadGuard { public: ThreadGuard() = default; explicit ThreadGuard(port::Thread&& thread) : thread_(std::move(thread)) {} ThreadGuard(const ThreadGuard&) = delete; ThreadGuard& operator=(const ThreadGuard&) = delete; ThreadGuard(ThreadGuard&&) noexcept = default; ThreadGuard& operator=(ThreadGuard&&) noexcept = default; ~ThreadGuard() { if (thread_.joinable()) { thread_.join(); } } const port::Thread& GetThread() const { return thread_; } port::Thread& GetThread() { return thread_; } private: port::Thread thread_; }; } // namespace ROCKSDB_NAMESPACE