Hi Steffen, Thank you for your useful advice. Actually, as you said, if I let libevent handle the networking stuff within one thread, I wonder that is there a bottle neck that happens when client sends a lot of messages to four sockets?
I use multiple threads on different ports for the same service. Here is my implementaton, Client A sends command X to thread 1 on socket 1234, then thread 1 will receive command X and execute the command. Client B sends command Y to both thread 1 and 2 on socket 1234 and 1235, respectively. Two threads receive the command, but thread 2 send a signal to thread 1, and wait. Thread 1 will execute the message, and after it finishs, it send a signal to thread 2 to update the result of command Y. Because I use the libevent and threads together, so I am very confused to design my implementation. In this case, should I use one event_base for all theads, or each event_base for each thread? @Jan: Thank you. I will take a look for your suggestion. Best Regards, Loan On Thu, Feb 23, 2017 at 9:12 PM, Steffen Christgau <[email protected]> wrote: > Hi Loan, > > although it might not answer your question, I'm wondering if your > application really needs threads for the different sockets. From what I > read, I conclude that each of the four threads handles the packet, i.e. > the messages/requests that are sent to the socket associated with that > particular thread. > > However, do the threads do different work, i.e. do they provide > different services on the sockets. Or do you use multiple threads > because you are offering the same service on different ports (and, thus, > on different interfaces)? Nevertheless, it appears to me that the > threads are not created by to distribute the work of processing the > messages that are received on either socket. > > Thus, you might not need different threads from my point of view. Just > create your four sockets and let libevent handle the networking stuff > within one thread. > > Look at the event_new function. To do different things with the > different sockets (e.g. handle different application protocols) just > provide different callbacks. Supply an according arg parameter if you > want to as well. > > http://www.wangafu.net/~nickm/libevent-book/Ref4_event.html provides > with you with a short introduction and also shows you how to add > multiple file descriptors to the same event_base. > > Hope this helps you. > > Regards, Steffen > > On 23.02.2017 10:31, Tôn Loan wrote: > > > > Hello list, > > > > I'm new to libevent and trying to learn some more about it for > > potential use in a project. Here is my problem. > > > > I have one server that has 5 threads. Each thread bounds to a different > UDP > > port (separate socket). Each thread listens on separate socket and > receive > > the message from client. > > I used each event_base for each thread and added signal events to each > > event_bases But only one event_base will receive signals. > > > > So, is there any solution for each event_base that will receive its own > > signals? > > Any ideas or sample code would be extremely helpful. Thank you so much. > > > > Best Regards, > > Loan Ton > > *********************************************************************** > To unsubscribe, send an e-mail to [email protected] with > unsubscribe libevent-users in the body. >
