Path: blob/main/contrib/llvm-project/libcxx/include/__thread/timed_backoff_policy.h
35233 views
// -*- C++ -*-1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//89#ifndef _LIBCPP___THREAD_TIMED_BACKOFF_POLICY_H10#define _LIBCPP___THREAD_TIMED_BACKOFF_POLICY_H1112#include <__config>1314#ifndef _LIBCPP_HAS_NO_THREADS1516# include <__chrono/duration.h>17# include <__thread/support.h>1819# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)20# pragma GCC system_header21# endif2223_LIBCPP_BEGIN_NAMESPACE_STD2425struct __libcpp_timed_backoff_policy {26_LIBCPP_HIDE_FROM_ABI bool operator()(chrono::nanoseconds __elapsed) const {27if (__elapsed > chrono::milliseconds(128))28__libcpp_thread_sleep_for(chrono::milliseconds(8));29else if (__elapsed > chrono::microseconds(64))30__libcpp_thread_sleep_for(__elapsed / 2);31else if (__elapsed > chrono::microseconds(4))32__libcpp_thread_yield();33else {34} // poll35return false;36}37};3839_LIBCPP_END_NAMESPACE_STD4041#endif // _LIBCPP_HAS_NO_THREADS4243#endif // _LIBCPP___THREAD_TIMED_BACKOFF_POLICY_H444546