Poller


Original: http://www.kegel.com/poller/

Unix nabízí dvě systémová volání, vyberte () a poll (), které přijímají seznam souborových deskriptorů, blokovat, dokud jeden z souboru je připraven pro I / O, a vrátí seznam připravených deskriptory souborů. Čas potřebný k provedení těchto volání je přímo úměrná počtu popisovačů souboru, což znamená, že se výše neefektivní pár tisíc deskriptory souborů.

Různé implementace Unixu nabídnout vysoce výkonné, škálovatelné náhradu za těchto systémových volání, např. / dev / poll, strukturu KQUEUE (), / dev / epoll a Linuxu v reálném čase signál připravenost oznámení, to vše s výrazně různými rozhraními. To z nich dělá těžké se naučit, a proto je těžké psát přenosný kód.

Poller je rozhraní, které poskytuje společný abstrakci pro všechny tyto režimy připravenosti oznámení. Nové programy připravenosti oznámení lze podpořit tím, že píše novou podtřídu Poller.

Poller lze v současné době v rámci dkftpbench. Pokud jej chcete použít, je stáhnout, rozbalit, konfigurovat, aby a instalovat dkftpbench jako obvykle (to trvá asi dvě minuty).

Ve zdroji, které vytvářejí Pollers, v současné době je třeba zahrnout každé z podtříd, které chcete použít, např. dostat je všechny, tak říkáš

# include <dkftpbench/Poller_devpoll.h>
# include <dkftpbench/Poller_kqueue.h>
# include <dkftpbench/Poller_poll.h>
# include <dkftpbench/Poller_select.h>
# include <dkftpbench/Poller_sigfd.h>
# include <dkftpbench/Poller_sigio.h>

Zdroj, který právě používá odkazy na již vytvořené Pollers můžete jednoduše zahrnovat základní třídy:

# include <dkftpbench/Poller.h>

Odkaz s-lPoller.

Tři programy, které používají Poller by mohly být užitečné jako příklad:

  •      Poller_bench.cc – microbenchmark porovnávání různých Poller podtřídy
  •      dkftpbench – velký chlupatý ftp benchmarku
  •      dkbetaftpd – betaftpd převedeny k použití Poller_poll. Potřebuje více práce, než je možné používat i jiné Pollers.

Budu poskytovat Poller v čistší distribuci někdy, když dostanu šanci …