[Libevent-users] pipeline server

Chris Brody chris.brody at gmail.com
Mon Feb 25 14:32:00 CET 2008


On 2/25/08, Tao Hui <taohui3 at gmail.com> wrote:
> Hello,
>
> I want to implement a pipeline server build on libevent, it contains a
> libevent thread and serval worker threads. libevent thread read request,
> write result, and worker thread process the request. Which can be described
> as follows:
>
> libevent thread:
> 1. accept a new connection.
> 2. register "EV_READ | EV_PERSIST" on the connection socket.
> 3. read a full request from the socket under libevent loop.
> 4. cancel the registration of socket through event_del, and add request to
> request queue,
>    then pthead_cond_signal worker thread.
>
> worker thread:
> 1. get a request from request queue, process it.
> 2. add the result to result queue, and signal libevent thread through pipe.
>
> libevnet thread:
> 1. get a result from result queue, register "EV_WRITE | EV_PERSIST" on the
>    connection socket associated with the result.
> 2. write the result to the socket under libevent loop.
I would like to suggest that you take a look at libev
(http://software.schmorp.de/pkg/libev.html), which has a libevent
"compatibility" API but also has a number of watchers to deal with
multiple threads. I do not understand these at all, but maybe they
would make more sense to you.

CB



More information about the libev mailing list