28 lines
		
	
	
		
			587 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			587 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| 
 | |
| #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::steady_clock::now();
 | |
|     const auto end = now + duration;
 | |
|     while (now < end)
 | |
|     {
 | |
|         co_await c_suspend();
 | |
|         now = std::chrono::steady_clock::now();
 | |
|     }
 | |
|     co_return;
 | |
| }
 | |
| } // namespace mijin
 | |
| 
 | |
| #endif // !defined(MIJIN_ASYNC_COROUTINE_SLEEP_HPP_INCLUDED)
 |