Hi Ton Loan, I am encountering the same situation that you are thinking so i am processing packets in different thread.THere comes a situation when the client sends too much data
On Fri, Feb 24, 2017 at 1:53 PM, Tôn Loan <[email protected]> wrote: > 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. >> > >
