#include <__thread/poll_with_backoff.h>
#include <__thread/timed_backoff_policy.h>
#include <exception>
#include <future>
#include <limits>
#include <thread>
#include <vector>
#if __has_include(<unistd.h>)
# include <unistd.h>
#endif
#if defined(__NetBSD__)
# pragma weak pthread_create
#endif
#if defined(_LIBCPP_WIN32API)
# include <windows.h>
#endif
#if defined(__ELF__) && defined(_LIBCPP_LINK_PTHREAD_LIB)
# pragma comment(lib, "pthread")
#endif
_LIBCPP_BEGIN_NAMESPACE_STD
thread::~thread() { … }
void thread::join() { … }
void thread::detach() { … }
unsigned thread::hardware_concurrency() noexcept { … }
namespace this_thread {
void sleep_for(const chrono::nanoseconds& ns) { … }
}
__thread_specific_ptr<__thread_struct>& __thread_local_data() { … }
template <class T>
class _LIBCPP_HIDDEN __hidden_allocator { … };
class _LIBCPP_HIDDEN __thread_struct_imp { … };
__thread_struct_imp::~__thread_struct_imp() { … }
void __thread_struct_imp::notify_all_at_thread_exit(condition_variable* cv, mutex* m) { … }
void __thread_struct_imp::__make_ready_at_thread_exit(__assoc_sub_state* __s) { … }
__thread_struct::__thread_struct() : … { … }
__thread_struct::~__thread_struct() { … }
void __thread_struct::notify_all_at_thread_exit(condition_variable* cv, mutex* m) { … }
void __thread_struct::__make_ready_at_thread_exit(__assoc_sub_state* __s) { … }
_LIBCPP_END_NAMESPACE_STD