"William E. Kempf" wrote:
[...]
> >          explicit scoped_lock(lightweight_mutex & m): m_(m)
> >          {
> >              while( InterlockedExchange(&m_.l_, 1) )
> >              {
> >                  // Note: changed to Sleep(1) from Sleep(0).
> >                  // According to MSDN, Sleep(0) will never yield
> >                  // to a lower-priority thread, whereas Sleep(1)
> >                  // will. Performance seems not to be affected.
> >
> >                  Sleep(1);
> >              }
> >          }
> >
> > (I don't actually use yield yet, so currently have no preference for
> > either, but just wondered what the intended use of yield was)
                                       ^^^^^^^^^^^^^^^^^^^^^

Well, <quoting Butenhof> "sched_yield() can be used to resolve some problems 
on a uniprocessor, though such problems can usually be solved more cleanly in 
other ways. Using sched_yield() will never solve a problem (unless the problem 
statement is "the performance is too good") on a multiprocessor, and you 
should never use it there."

http://groups.google.com/groups?selm=LiSt9.14%24jw2.278613%40news.cpqcorp.net
(Subject: Re: relinquishing a time-slice)

http://groups.google.com/groups?selm=rzdE7.1198%24RL6.17634%40news.cpqcorp.net
(Subject: Re: Thread yield question (repost))

> 
> I'll look into this and fix it.  Thanks.

Other than "breaking" the yield() it won't fix anything, I'm afraid. 

regards,
alexander.

--
It's "Unix" if it has the "x" sound in its name - the Xbox must be Unix then.

                                         --from a discussion on slashdot.org

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to