On Mon, Jul 30, 2001 at 01:15:32PM -0700, Justin Erenkrantz wrote:
> On Mon, Jul 30, 2001 at 12:54:18PM -0600, Brad Nicholes wrote:
> >     I would like to propose adding the function apr_thread_yield() as part 
> > of the threading API's.  The reason for this to to allow applications to 
> > force a thread to yield the processor during a compute bound operation.  On 
> > the NetWare platform, not yielding the processor in a timely fashion can 
> > cause the entire server to become sluggish.  The implementation of this 
> > routine for NetWare would be as simple as:
> > 
> > void apr_thread_yield()
> > {
> >     NXThreadYield();
> > }
> 
> I'm not sure that this is a good idea (esp. considering that sched_yield
> on POSIX systems is not well-defined - it depends on your scheduling
> policy).
> 
> On most OSes, this should be a no-op (as the OS should be handling 
> this via preemption).  I'm not a fan of adding apr_thread_yield() 
> throughout to support a poor OS scheduler.
> 
> So, -0 from me (I won't stop you, but I don't like it).  -- justin

That was also my initial reaction, but now I'm thinking that in a build
or platform where only userspace thread implementation exists, this is
an [unfortunate] necessity.

We will of course have to litter these types of calls throughout processor
intensive pieces of code, like Brad mentioned.

So I'm +1 (but I'm not an APR committer, so take it FWIW :)
-aaron

Reply via email to