#pragma once
#include <limits.h>
#include <atomic>
#include <functional>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <glog/logging.h>
#include <folly/Exception.h>
#include <folly/Function.h>
#include <folly/MapUtil.h>
#include <folly/Portability.h>
#include <folly/ScopeGuard.h>
#include <folly/SharedMutex.h>
#include <folly/Synchronized.h>
#include <folly/concurrency/container/atomic_grow_array.h>
#include <folly/container/Foreach.h>
#include <folly/detail/StaticSingletonManager.h>
#include <folly/detail/UniqueInstance.h>
#include <folly/lang/Exception.h>
#include <folly/memory/Malloc.h>
#include <folly/portability/PThread.h>
#include <folly/synchronization/MicroSpinLock.h>
#include <folly/synchronization/RelaxedAtomic.h>
#include <folly/system/AtFork.h>
#include <folly/system/ThreadId.h>
namespace folly {
enum class TLPDestructionMode { … };
struct AccessModeStrict { … };
namespace threadlocal_detail {
constexpr uint32_t kEntryIDInvalid = …;
struct SharedPtrDeleter { … };
}
}
#if defined(__GLIBCXX__)
namespace std {
template <>
struct __is_location_invariant<::folly::threadlocal_detail::SharedPtrDeleter>
: std::true_type {};
}
#endif
namespace folly {
threadlocal_detail
}