Levi Pearson wrote:
Well, it's cool that you're trying to build a scalable system as a learning project, and I think this is a reasonable sort of project to start with. I think you're getting a bit ahead of yourself, though, and that you ought to take a couple of steps back and start with something simpler. If you *really* want to use threads, I would suggest reading about them in a bit more depth before trying another design, because your current one is fundamentally broken. If you just want to build a scalable system, I suggest avoiding threads altogether and building on top of a select()-based event loop.

Levi wrote everything I wanted to write, but I didn't want to spend the time doing it. Thanks Levi!

It is *never* a good idea to create a new thread for each user if scalability is a requirement. If you really want to use threads, I would propose a pool of worker threads that can service clients on demand. It'll bound unchecked resource growth and be good experience for you to implement. However, it's going to be a lot more work than a select()-based event loop. What I've found as I've designed systems like this over the years is that the POSIX and UNIX gurus of yesteryear have already thought about all these problems, and have given us a hugely robust set of tools that do what you need. select() is one of those tools.

Unfortunately, I'm not familiar with any references that would help you with this, other than the scar-filled memories in my own mind. ;) Along that line of reasoning, this could be a great opportunity to create some scars of your own. At least it's not on someone else's dime. I would actually recommend implementing the system as you propose so you can get a feel for just how problematic it would be. :)

Good luck! Let us know how it goes and if you need testers.

--Dave

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to