From 3ad39e9878310e5317ee73c9b353c1e2c1c5c4ee Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Sat, 11 Jul 2026 22:48:30 +0800 Subject: lib: establish Zircon libc++ and KTL foundation --- third_party/libcxx/include/c++/v1/thread | 133 +++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 third_party/libcxx/include/c++/v1/thread (limited to 'third_party/libcxx/include/c++/v1/thread') diff --git a/third_party/libcxx/include/c++/v1/thread b/third_party/libcxx/include/c++/v1/thread new file mode 100644 index 0000000..029ed41 --- /dev/null +++ b/third_party/libcxx/include/c++/v1/thread @@ -0,0 +1,133 @@ +// -*- C++ -*- +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_THREAD +#define _LIBCPP_THREAD + +/* + + thread synopsis + +namespace std +{ + +class thread +{ +public: + class id; + typedef pthread_t native_handle_type; + + thread() noexcept; + template explicit thread(F&& f, Args&&... args); + ~thread(); + + thread(const thread&) = delete; + thread(thread&& t) noexcept; + + thread& operator=(const thread&) = delete; + thread& operator=(thread&& t) noexcept; + + void swap(thread& t) noexcept; + + bool joinable() const noexcept; + void join(); + void detach(); + id get_id() const noexcept; + native_handle_type native_handle(); + + static unsigned hardware_concurrency() noexcept; +}; + +void swap(thread& x, thread& y) noexcept; + +class thread::id +{ +public: + id() noexcept; +}; + +bool operator==(thread::id x, thread::id y) noexcept; +bool operator!=(thread::id x, thread::id y) noexcept; // removed in C++20 +bool operator< (thread::id x, thread::id y) noexcept; // removed in C++20 +bool operator<=(thread::id x, thread::id y) noexcept; // removed in C++20 +bool operator> (thread::id x, thread::id y) noexcept; // removed in C++20 +bool operator>=(thread::id x, thread::id y) noexcept; // removed in C++20 +strong_ordering operator<=>(thread::id x, thread::id y) noexcept; // C++20 + +template +basic_ostream& +operator<<(basic_ostream& out, thread::id id); + +template +struct formatter; + +namespace this_thread +{ + +thread::id get_id() noexcept; + +void yield() noexcept; + +template +void sleep_until(const chrono::time_point& abs_time); + +template +void sleep_for(const chrono::duration& rel_time); + +} // this_thread + +} // std + +*/ + +#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) +# include <__cxx03/thread> +#else +# include <__config> + +# if _LIBCPP_HAS_THREADS + +# include <__thread/this_thread.h> +# include <__thread/thread.h> + +# if _LIBCPP_STD_VER >= 20 +# include <__thread/jthread.h> +# endif + +# if _LIBCPP_STD_VER >= 23 +# include <__thread/formatter.h> +# endif + +# include + +// standard-mandated includes + +// [thread.syn] +# include + +# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) +# pragma GCC system_header +# endif + +# endif // _LIBCPP_HAS_THREADS + +# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 +# include +# endif + +# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 +# include +# include +# include +# include +# include +# endif +#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) + +#endif // _LIBCPP_THREAD -- cgit v1.2.3