多ノードにすばやくping☆pongする必要があったのでAnyEvent::FastPingを使ってみたんですが、内部的にどういう処理をしてるのか気になってメモったので残しておきたいと思います。
追記。
「epoll(7)やselect(2)で監視している」のepoll(7)だとかselect(2)だとかは AnyEvent が隠蔽してくれるので、epoll(7)だとかselect(2)だとかのAPIの違いは気にする必要がないです。
こんな感じ:
our $THR_RES_W = AnyEvent->io (fh => $THR_RES_FH, poll => 'r', cb => sub { my $sv = _read_res or return; $sv->(); });
に、AnyEventのI/O監視のAPIを使うだけで OK です。
自分の環境 (Linux) では、use AnyEvent だけだと select(2) が使われて、
use AnyEvent; use EV;
するとepoll(7)が使われました。
(港区在住 非同期野郎Pチーム 31)