// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_THREADING_THREAD_LOCAL_INTERNAL_H_ #define BASE_THREADING_THREAD_LOCAL_INTERNAL_H_ #include "base/dcheck_is_on.h" #if DCHECK_IS_ON() #include <atomic> #include <memory> #include <ostream> #include "base/check_op.h" #include "base/memory/raw_ptr.h" #include "base/threading/thread_local_storage.h" namespace base { namespace internal { // A version of ThreadLocalOwnedPointer which verifies that it's only destroyed // when no threads, other than the one it is destroyed on, have remaining state // set in it. A ThreadLocalOwnedPointer instance being destroyed too early would // result in leaks per unregistering the TLS slot (and thus the DeleteTlsPtr // hook). template <typename T> class CheckedThreadLocalOwnedPointer { … }; } // namespace internal } // namespace base #endif // DCHECK_IS_ON() #endif // BASE_THREADING_THREAD_LOCAL_INTERNAL_H_