Depends on what you mean by "services the packets". Decoding and ACKing could probably work well in a socket read loop but dispatching the packet to the proper part of the simulation could incur many delays which can cause a lot of packet loss in the lower level operating system routines as the buffers are only so large and any excessive data is discarded. Putting them in a queue for another thread to service is a good compromise which tends to keep things working under most load conditions.
However, if your design seems to improve things under a wide range of operating conditions, feel free to submit a patch! But please don't expect it to be accepted as it may need a *lot* of testing to show it's benefit over the current implementation. On Fri, Apr 25, 2014 at 7:45 PM, Matt Lehmann <[email protected]> wrote: > As of the last release, the algorithm for handling udp packets from > clients is as so... > > Start an async read cycle on the socket, adding packets to a blocking > queue. > Also start a smart thread which waits on the queue and services the > packets. > > Wouldn't it be more efficient to use a single thread that waits on the > socket by looping on a socket.poll call, immediately servicing packets? > > I have tried this locally and I really think it would improve > efficiency. If you want I can submit a patch. > > Thanks > > Matt > > _______________________________________________ > Opensim-dev mailing list > [email protected] > http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev > >
_______________________________________________ Opensim-dev mailing list [email protected] http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
