Il lun 14 mar 2022, 15:37 Stefan Hajnoczi <stefa...@redhat.com> ha scritto:

> On Mon, Mar 14, 2022 at 10:32:01AM +0100, Paolo Bonzini wrote:
> > +// ------------------------
> > +
> > +// CoroutineFn does not even need anything more than what
> > +// BaseCoroutine provides, so it's just a type alias.  The magic
> > +// is all in ValuePromise<T>.
> > +//
> > +// Suspended CoroutineFns are chained between themselves.  Whenever a
> > +// coroutine is suspended, all those that have done a co_await are
> > +// also suspended, and whenever a coroutine finishes, it has to
> > +// check if its parent can now be resumed.
> > +//
> > +// The two auxiliary classes Awaiter and ResumeAndFinish take
> > +// care of the two sides of this.  Awaiter's await_suspend() stores
> > +// the parent coroutine into ValuePromise; ResumeAndFinish's runs
> > +// after a coroutine returns, and resumes the parent coroutine.
> > +
> > +template<typename T> struct ValuePromise;
> > +template<typename T>
> > +using CoroutineFn = BaseCoroutine<ValuePromise<T>>;
> > +
> > +typedef CoroutineFn<void> CoroutineFunc(void *);
>
> CoroutineFunc looks like a coroutine entry point function. If that's
> correct then I suggest naming it CoroutineEntryFunc to avoid confusion
> between CoroutineFn vs CoroutineFunc (their names are too similar).
>

Nevermind, it's a useless dup of CoroutineEntry.


> Also, where is CoroutineFunc used?
>
> > +// The actu promises, respectively for non-void and void types.
>
> s/actu/actual/?
>

Yes.

Paolo

>

Reply via email to