title: How do I replace select() with kevent() for higher performance?
body: <p>From the <a href="http://en.wikipedia.org/wiki/Kqueue" rel="nofollow noreferrer">Kqueue Wikipedia Page</a>:</p>
  
  <p><em>Kqueue provides efficient input and output event pipelines between the kernel and userland. Thus, it is possible to modify event filters as well as receive pending events while using only a single system call to kevent(2) per main event loop iteration. This contrasts with older traditional polling system calls such as poll(2) and select(2) which are less efficient, especially when polling for events on a large number of file descriptors</em></p>
  
  <p>That sounds great.  I target FreeBSD for my server, and I'm handling a significant amount of network socket fd's - using a select() on them all and figuring out who to read data from.  I'd rather use kevent() calls to get higher performance, since that's what it's there for!</p>
  
  <p>I've read the <a href="http://www.gsp.com/cgi-bin/man.cgi?section=2&amp;topic=kevent" rel="nofollow noreferrer">man page for kevent on FreeBSD here</a> but it's cryptic to me and I'm not finding good resources that explain it.  An example of using kevent to replace select would solve my problem, and would also help me get a better idea of how kevent() is used.</p>