From c85563a2892d2fe1716e237baa90524311039985 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 27 May 2023 14:02:25 +0800 Subject: [PATCH] 1 --- server/robotserver/comgr.cc | 9 +++++---- server/robotserver/coroutine.cc | 5 +++++ server/robotserver/coroutine.h | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/server/robotserver/comgr.cc b/server/robotserver/comgr.cc index 93ff9ffb..ebfd7d21 100644 --- a/server/robotserver/comgr.cc +++ b/server/robotserver/comgr.cc @@ -11,20 +11,21 @@ void CoMgr::Init() ( [] (Coroutine* co) { - a8::XPrintf("call 1\n", {}); + a8::XPrintf("call 1 %d\n", {a8::XGetTickCount()}); for (int i = 0; i < 10; ++i) { co->CoYield(); - a8::XPrintf("call A %d\n", {i}); + co->CoAwait(co->Sleep(1000)); + a8::XPrintf("call A %d %d\n", {i, a8::XGetTickCount()}); } }); CreateCo ( [] (Coroutine* co) { - a8::XPrintf("call 10\n", {}); + a8::XPrintf("call 10 %d\n", {a8::XGetTickCount()}); for (int i = 0; i < 10; ++i) { co->CoYield(); - a8::XPrintf("call B %d\n", {i}); + a8::XPrintf("call B %d %d\n", {i, a8::XGetTickCount()}); } }); } diff --git a/server/robotserver/coroutine.cc b/server/robotserver/coroutine.cc index f33805af..cabfef4c 100644 --- a/server/robotserver/coroutine.cc +++ b/server/robotserver/coroutine.cc @@ -14,6 +14,11 @@ void Awaiter::Await(std::shared_ptr notifyer) DoAwait(); } +std::shared_ptr Awaiter::Sleep(int time) +{ + return std::make_shared(time); +} + void Promise::DoAwait() { diff --git a/server/robotserver/coroutine.h b/server/robotserver/coroutine.h index a9a8d74e..dadd1c17 100644 --- a/server/robotserver/coroutine.h +++ b/server/robotserver/coroutine.h @@ -33,6 +33,7 @@ class Awaiter : public std::enable_shared_from_this } virtual void DoResume() {}; + std::shared_ptr Sleep(int time); protected: std::list> notifyers_;