Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 3 Jul 1999 11:10:39 -0500 (EST)
From:      Alfred Perlstein <bright@rush.net>
To:        Jonathan Lemon <jlemon@americantv.com>
Cc:        "Brian F. Feldman" <green@unixhelp.org>, wayne@crb-web.com, hackers@FreeBSD.ORG
Subject:   Re: poll() vs select()
Message-ID:  <Pine.BSF.3.96.990703110756.14320r-100000@cygnus.rush.net>
In-Reply-To: <19990703104412.48991@right.PCS>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 3 Jul 1999, Jonathan Lemon wrote:

> On Jul 07, 1999 at 11:27:57AM -0400, Brian F. Feldman wrote:
> > On Sat, 3 Jul 1999, Jonathan Lemon wrote:
> > 
> > > On Jul 07, 1999 at 01:01:07AM -0400, Brian F. Feldman wrote:
> > > > On Fri, 2 Jul 1999, Jonathan Lemon wrote:
> > > 
> > > > > As for new code, use whichever you are comfortable with.  Personally, I
> > > > > would recommend poll(), since it provides some added functionality over
> > > > > select() that makes for easier programming.
> > > > 
> > > > poll() is a huge pain to use, which is why I recommend select().
> > > 
> > > Whichever you're comfortable with.  poll() isn't a pain once you know
> > > how to use it, and it does bring additional benefits.
> > 
> > I don't see how you can not find poll() a pain when compared to select(). It
> > requires so much set-up, much like (for instance) aio_write() as opposed to
> > write(). I suppose if you're masochistic, you won't mind doing that :)
> 
> Yes, it does require more initial setup.  But consider:
> 
>     - you don't have to re-initialize the fd sets every time around the
>       loop, as you do with select().  This administrative overhead is 
>       moved into the initial setup, not into the main loop.
> 
>     - it becomes simple to ignore a slot entry; simply set the fd value to -1.
> 
>     - you get notification when the fd is closed.  E.g.: you can poll()
>       on a fd, ignoring both read ready and write ready state, and get
>       POLLHUP returned when it closes.  for select(), the only way to
>       know that the fd closed is to actually do a read() on the descriptor,
>       and have it return EOF.

I agree.

With a proper algorithm you can also track the fds in use and 
migrate them to lower slots in the pollfd array as well as make
an allocator that attempts to grab slots at the beginning.

Just something i'm working on right now :)

-Alfred Perlstein - [bright@rush.net|bright@wintelcom.net] 
systems administrator and programmer
    Win Telecom - http://www.wintelcom.net/



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.990703110756.14320r-100000>