On Mon, Feb 23, 2004 at 01:33:31PM -0600, Scott Lamb wrote:
> I'm putting together a patch to use SO_(RCV|SND)TIMEO for
> apr_socket_timeout where available; I expect I'll find it has better
> performance on some platforms, as it would no longer require using
> non-blocking IO and preceding every read() and write() with a select().
> (I intend to try benchmarking Apache on Darwin, where the system call
> overhead seems to be quite high.)
>
> On some older versions of platforms (Linux 2.2), these #defines exist
> but do not work - it's not possible to set them. Can I assume that if
> APR is built with a kernel in which it does work (Linux 2.4), it will
> be run with one as well? Or should I include a runtime check for this
> option?
Icky. I don't think it is really possible to make that assumption.
Thankfully, I also believe this is reasonably solved with a global
variable (i.e. race conditions around coming up with the same flag don't
apply :-), and the value certainly won't change over the process'
lifetime).
I would recommend a dynamic solution for now. We may be able to make that
compile-time for certain platforms, where we know "all" versions handle
the flag properly [when present].
Cheers,
-g
--
Greg Stein, http://www.lyra.org/
|