Hey thats neat, but I think I've hit upon a much more efficient implementation. As I said before at present I have it so each sender creates a new thread and polls the scenegraph on it's own.
After sleeping on it I realized this is far less efficient than another slightly more complex model. In this model the whole system becomes event driven. When my scenegraph recieves an event, it searches itself once for all objects in scope of the event. It then notifies all the Sender objects (we'll call it a client handler for clairty), in scope of the event, which then take the task of passing it on to the client. I believe that this would be much more efficient than the current model, because it eliminates the overhead of a context switch, as well as the overhead of having each client handler, query the scenegraph on it's own whether or not an event has taken place. Thoughts? On 1/29/07, Dave Smith <[EMAIL PROTECTED]> wrote:
Steve wrote: > By the way, how much overhead does threading actually introduce, > especially in a situation where there may be hundreds or thousands of > threads in an application? You may get to a point where you can no longer spawn new threads, and pthread_create() will start to fail and you will have no recourse. It still doesn't seem to me like you have explored select() sufficiently. select() will allow you to have a single thread (or even a small pool of threads) on the server that can handle client requests very quickly. If you have multiple cores, use two threads, each responsible for a different set of client socket descriptors. Spread the most active socket descriptors around evenly between the threads. That'd be a fun, and very efficient implementation. If your data model is designed right, your CPU will likely never be the bottleneck anyway. It'll be the network. --Dave /* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
/* PLUG: http://plug.org, #utah on irc.freenode.net Unsubscribe: http://plug.org/mailman/options/plug Don't fear the penguin. */
