asyncio: improve performance by scheduling last frame

This commit is contained in:
Li Jie
2024-07-25 10:49:02 +08:00
parent f2e15a6846
commit a4286dbd4b
3 changed files with 56 additions and 75 deletions

View File

@@ -60,7 +60,7 @@ func Race[OutT any](acs ...AsyncCall[OutT]) *PromiseImpl[OutT] {
for _, ac := range acs {
ac := ac
go func(ac AsyncCall[OutT]) {
v, err := Run(ac)
v, err := Run[OutT](ac)
rc <- Result[OutT]{v, err}
}(ac)
}
@@ -94,7 +94,7 @@ func All[OutT any](acs []AsyncCall[OutT]) *PromiseImpl[[]Result[OutT]] {
ac := ac
wg.Add(1)
go func(ac AsyncCall[OutT]) {
v, err := Run(ac)
v, err := Run[OutT](ac)
ret[idx] = Result[OutT]{v, err}
wg.Done()
}(ac)
@@ -157,15 +157,15 @@ func Await3Compiled[OutT1, OutT2, OutT3 any](
go func() {
defer wg.Done()
ret.V1, ret.Err = Run(ac1)
ret.V1, ret.Err = Run[OutT1](ac1)
}()
go func() {
defer wg.Done()
ret.V2, ret.Err = Run(ac2)
ret.V2, ret.Err = Run[OutT2](ac2)
}()
go func() {
defer wg.Done()
ret.V3, ret.Err = Run(ac3)
ret.V3, ret.Err = Run[OutT3](ac3)
}()
wg.Wait()
if debugAsync {