> What I want to do is : > 1. a main thread listening on a even_base, let's call it BASE, > 2. when a new connection (conn-1) coming, the listening callback is involked, > and a bufferevent (event-1) is created. Then the bufferevent (event-1) is > put into the BASE with read/write callback functions. > 3. when a second connection (conn-2) comming, the listening callback is also > involked, and another bufferevent (event-2) is created. Then event-2 is also > put into the BASE with event-2's read/write callback functions. > 4. When conn-1 recvs some data, event-1's read callback is involked by > BASE(main thread). Then, event-1's read callback function reads the message > and put it into a message queue, and then returns. > 5. There is a thread-pool processing the message queue, so diffenent messages > are parallel processed. For example, thread-1 picks up a message from the > message queue, process it and put the response message into the socket buffer > using (eventbuffer_add()).
That you just need to run event_base_loop() in a thread that's all. Or I'm missing something? > So even though some requests might take a long time to process, but other > other requests don't block. Because we have different threads to process the > message queue. > > According to the above model, the event_base and bufferevent should be both > thread-safe, because It's better to enable locking for bufferevents anyway. > 1. For bufferevent , different threads can add data with the same bufferevent > 2. For event_base, different bufferevents in the same event_base might be > free and added by different threads. And globally. *********************************************************************** To unsubscribe, send an e-mail to [email protected] with unsubscribe libevent-users in the body.
