in reply to Re^2: Why are people not using POE?
in thread Why are people not using POE?

Really high-performance server applications will generally prefer cooperative multi-(task|thread)ing.

That statement is indefensibly broad and, in my experience, incorrect. First, I don't know of a single system which uses cooperative multi-threading (I would say there's never been one, but I'm no CS historian). In all the systems I've seen multi-threading is preemptive, not cooperative, for obvious reasons. Second "really high-performance server applications" come in so many different shapes and flavors that stating that any one technology will be "generally preferred" is just dumb.

For my "really high-performance server applications" I use a pool of pre-forked processes, and it works quite well! That doesn't mean it's right for all tasks but it does suggest that cooperative multi-tasking might not be the undisputed king of silver bullet land!

-sam

Replies are listed 'Best First'.
Re^4: Why are people not using POE?
by rcaputo (Chaplain) on Jun 10, 2005 at 20:41 UTC

    A Design Framework for Highly Concurrent Systems (PDF) compares threaded and event driven servers (and their performance degradation patterns) before it goes on to explain how the authors' hybrid system can outperform either.

    I'm passing it on because it seems relevant, and I thought it was a good read.

Re^4: Why are people not using POE?
by salva (Canon) on Jun 10, 2005 at 20:52 UTC
    I don't know of a single system which uses cooperative multi-threading

    well, what happens is that "cooperative multi-threading" is not the usual name for this kind of aplications, but I am sure you will know about squid, qmail or the X server just to name a few.

      You're telling me those applications use non-preemptive threading systems? I highly doubt that. They might be select()-based or polling, but that doesn't make them multi-threaded just because they handle multiple tasks simultaneously.

      Let's not play semantic games here - threads and tasks are not the same things!

      -sam

        You'll notice that I said "multi-(task|thread)ing" originally. Cooperative multi-threading libraries do exist, and I do know of a couple systems build using them, but cooperative multi-tasking, in the form of event-driven state machines are much more common.

        BTW, how many requests per second does your "really high-performance" pre-forked server handle?