Network servers often need to process a large amount of network events asynchronously. They usually use select() or poll() to retrieve events from file descriptors. However, previous researches have shown that these system calls scale poorly when the number of open connections are significantly increased. Several kernel-level solutions have been proposed. In this paper, we first compare several event dispatching mechanisms available under Linux, and then present our user-level solution that takes advantage of temporal locality among events while polling. We show that a memory-based web server with our approach can have about 20%-30% performance improvement.