Added simple (albeit in many cases suboptiomal) c_sleep() method for coroutines.
This commit is contained in:
parent
e586698fb6
commit
b10f250945
27
source/mijin/async/coroutine_sleep.hpp
Normal file
27
source/mijin/async/coroutine_sleep.hpp
Normal 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)
|
Loading…
x
Reference in New Issue
Block a user