William A. Rowe, Jr. wrote:

If the user must rewrite their content handlers to pay attention to thread jumps, and must use some sort of yeild beyond apr_socket_poll/select(), then
I'd agree it becomes 3.0.

I wouldn't worry about protocol/mpm authors, who are a breed to ourselves
and should be able to handle any bump. It's the joe who put together a nifty auth or content module who has to jump through hoops to learn the new API who
will suffer if we don't yell out **3.0**!!!

Well, I get back to thinking about the cultural difference between open source and commercial software here. That is, the difference between a conceptually simple system (Unix) and a system with optimization for every special case, codesign, et. al (OS/360)

When Microsoft decided that threading would be ~the way~ in Windows, they put a lot of effort into letting people run old components by tagging old components as threadsafe or not, and automatically serializing components that aren't threadsafe.

The prefork model has contributed to the reality and perception of Apache as a reliable product. Threading is great for a system that's built like a swiss watch, but a disaster for the tangle of scripts (or tangle of objects) that most web sites run.

In the days of MS-DOS, I did a lot of downloading over a 2400 baud modem, so I wrote an xmodem/ymodem client that ran in the background as you did other things -- this was your classic interrupt-driven state machine. I never got it to work 100% right. It's not easy to do this kind of programming AND when you push the hardware and OS in this direction you find out things you wish you hadn't.

I've had the same experience with single-threaded web servers such as thttpd and boa. I'd do a quick evaluation and I'd be like "damn that's fast" and then I'd put it into production and find that they didn't work 100% right. I'd go back to Apache because, even if ate more RAM than I liked, Apache worked correctly.

As Apache has been moving in the direction of more efficient concurrency models, IIS has been moving in the direction of more isolation. I'd love more efficiency, but I don't want to give up reliability -- if the world's web apps are going to need to be designed like swiss watches in the future, the world is going to pass Apache 3 by.



Reply via email to