… | |
… | |
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 $MAP_PREFETCH{$k}; |
2392 | } |
2392 | } |
2393 | |
2393 | |
2394 | delete $MAP_PREFETCH{$k}; |
2394 | delete $MAP_PREFETCH{$k}; |
2395 | } |
2395 | } |
2396 | } |
2396 | } |
… | |
… | |
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 | |