Added simple (albeit in many cases suboptiomal) c_sleep() method for coroutines.

This commit is contained in:
Patrick 2024-06-23 12:19:57 +02:00
parent e586698fb6
commit b10f250945

View File

@ -0,0 +1,27 @@
#pragma once
#if !defined(MIJIN_ASYNC_COROUTINE_SLEEP_HPP_INCLUDED)
#define MIJIN_ASYNC_COROUTINE_SLEEP_HPP_INCLUDED 1
#include <chrono>
#include "./coroutine.hpp"
namespace mijin
{
template<typename Rep, typename Period>
Task<> c_sleep(std::chrono::duration<Rep, Period> duration)
{
auto now = std::chrono::high_resolution_clock::now();
const auto end = now + duration;
while (now < end)
{
co_await c_suspend();
now = std::chrono::high_resolution_clock::now();
}
co_return;
}
} // namespace mijin
#endif // !defined(MIJIN_ASYNC_COROUTINE_SLEEP_HPP_INCLUDED)