… | |
… | |
8 | TODO: how to debug safe_cancel failure (vebrose mode? show how to make backtrace?) |
8 | TODO: how to debug safe_cancel failure (vebrose mode? show how to make backtrace?) |
9 | TODO: scalar context for Coro::AIO wrappers? |
9 | TODO: scalar context for Coro::AIO wrappers? |
10 | |
10 | |
11 | TODO: State.xs could short-circuit some macros such as CORO_EXECUTE_SLF |
11 | TODO: State.xs could short-circuit some macros such as CORO_EXECUTE_SLF |
12 | TODO: use frame->destroy to improve Coro::EV |
12 | TODO: use frame->destroy to improve Coro::EV |
|
|
13 | |
|
|
14 | TODO: concurrent ->recv on same condvar |
|
|
15 | sub Coro::AnyEvent::CondVar::_send { |
|
|
16 | if ($_[0]{_ae_coro}) { |
|
|
17 | $_->ready |
|
|
18 | for values %{ delete $_[0]{_ae_coro} } |
|
|
19 | } |
|
|
20 | }; |
|
|
21 | |
|
|
22 | sub Coro::AnyEvent::CondVar::_wait { |
|
|
23 | until ($_[0]{_ae_sent}) { |
|
|
24 | $AnyEvent::CondVar::Base::WAITING = 0; # avoid recursive check by AnyEvent |
|
|
25 | local $_[0]{_ae_coro}{$Coro::current+0} = $Coro::current; |
|
|
26 | Coro::schedule; |
|
|
27 | } |
|
|
28 | }; |
|
|
29 | |
13 | |
30 | |
14 | 6.57 Wed Jul 29 15:08:44 CEST 2020 |
31 | 6.57 Wed Jul 29 15:08:44 CEST 2020 |
15 | - override AnyEvent condvar methods "properly", as AnyEvent |
32 | - override AnyEvent condvar methods "properly", as AnyEvent |
16 | has support for pluggable condvars since 2011. This also |
33 | has support for pluggable condvars since 2011. This also |
17 | avoids problems with recursive waits by avoiding to mix |
34 | avoids problems with recursive waits by avoiding to mix |