… | |
… | |
687 | |
687 | |
688 | while ($busy) { |
688 | while ($busy) { |
689 | if (Coro::nready) { |
689 | if (Coro::nready) { |
690 | Coro::cede_notself; |
690 | Coro::cede_notself; |
691 | } else { |
691 | } else { |
692 | EV::run EV::RUN_ONESHOT; |
692 | EV::run EV::RUN_ONCE; |
693 | } |
693 | } |
694 | } |
694 | } |
695 | |
695 | |
696 | my $time = AE::time - $time; |
696 | my $time = AE::time - $time; |
697 | |
697 | |
… | |
… | |
2384 | |
2384 | |
2385 | $MAP_PREFETCHER ||= cf::async { |
2385 | $MAP_PREFETCHER ||= cf::async { |
2386 | $Coro::current->{desc} = "map prefetcher"; |
2386 | $Coro::current->{desc} = "map prefetcher"; |
2387 | |
2387 | |
2388 | while (%MAP_PREFETCH) { |
2388 | while (%MAP_PREFETCH) { |
2389 | while (my ($k, $v) = each %MAP_PREFETCH) { |
2389 | for my $k (keys %MAP_PREFETCH) { |
2390 | if (my $map = find $k) { |
2390 | if (my $map = find $k) { |
2391 | $map->load if $v; |
2391 | $map->load if $v; |
2392 | } |
2392 | } |
2393 | |
2393 | |
2394 | delete $MAP_PREFETCH{$k}; |
2394 | delete $MAP_PREFETCH{$k}; |
… | |
… | |
3938 | # we must not ever block the main coroutine |
3938 | # we must not ever block the main coroutine |
3939 | $Coro::idle = sub { |
3939 | $Coro::idle = sub { |
3940 | Carp::cluck "FATAL: Coro::idle was called, major BUG, use cf::sync_job!\n";#d# |
3940 | Carp::cluck "FATAL: Coro::idle was called, major BUG, use cf::sync_job!\n";#d# |
3941 | (async { |
3941 | (async { |
3942 | $Coro::current->{desc} = "IDLE BUG HANDLER"; |
3942 | $Coro::current->{desc} = "IDLE BUG HANDLER"; |
3943 | EV::run EV::RUN_ONESHOT; |
3943 | EV::run EV::RUN_ONCE; |
3944 | })->prio (Coro::PRIO_MAX); |
3944 | })->prio (Coro::PRIO_MAX); |
3945 | }; |
3945 | }; |
3946 | |
3946 | |
3947 | evthread_start IO::AIO::poll_fileno; |
3947 | evthread_start IO::AIO::poll_fileno; |
3948 | |
3948 | |