#include #include #include #include #include "librf/librf.h" using namespace librf; #ifndef __GNUC__ //GCC: 没有提供__builtin_coro_frame这样的内置函数 future_t<> test_routine_use_timer() { using namespace std::chrono; for (size_t i = 0; i < 3; ++i) { co_await librf::sleep_for(100ms); std::cout << "timer after 100ms" << std::endl; std::cout << "1:frame=" << _coro_frame_ptr() << std::endl; } } future_t<> test_routine_use_timer_2() { std::cout << "test_routine_use_timer_2" << std::endl; co_await test_routine_use_timer(); std::cout << "2:frame=" << _coro_frame_ptr() << std::endl; co_await test_routine_use_timer(); std::cout << "2:frame=" << _coro_frame_ptr() << std::endl; co_await test_routine_use_timer(); std::cout << "2:frame=" << _coro_frame_ptr() << std::endl; } #endif //#ifndef __GNUC__ void resumable_main_routine() { std::cout << __FUNCTION__ << std::endl; //go test_routine_use_timer_2(); #ifndef __GNUC__ //GCC: 没有提供__builtin_coro_frame这样的内置函数 go test_routine_use_timer(); #endif //#ifndef __GNUC__ this_scheduler()->run_until_notask(); } #if LIBRF_TUTORIAL_STAND_ALONE int main() { resumable_main_routine(); return 0; } #endif