Marek Janukowicz wrote: > I'm writing a network server with some specific requirements: > - 5-50 clients connected (almost) permanently (maybe a bit more, but > definitely not hundreds of them) > - possibly thousands of requests per seconds > - responses need to be returned within 5 seconds or the client will > disconnect and complain > > Currently I have a Master thread (which is basically the main thread) > which is handling connections/disconnections, socket operations, sends > parsed requests for processing to single Worker thread, sends responses to > clients. Interaction with Worker is done via message passing.
I'd like to thank anyone for valuable input. For now I chose Dmitry's suggestion (which was an extension of my idea to go with thread per client), so I have multiple receivers, single worker and multiple senders. That works quite well, although I didn't really test that with many clients. One nice thing is that "interrupted system call" problem magically went away - it looks like it occurred with Socket.select (which I don't use after architectural changes anymore) only and socket.send/receive is apparently not affected. -- Marek Janukowicz
