|
Boost : |
From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2002-05-31 08:50:45
Darin Adler wrote:
[...]
> Once we found this out, Peter Dimov and others changed smart_ptr
> so that it doesn't use this header any more. They also made other
> improvements to the thread safety code to make it simpler and faster.
> The current version of Boost, 1.28.0, has this fixed.
Memory visibility (acquire-on-lock/release-on-unlock semantics) aside,
the 'lwm' stuff in CVS (the one full of sched_yield()/winapi::Sleep(0))
is BROKEN... unless, of course, ALL boost MT client applications are
meant for deployment on scheduling allocation domains of size ONE
(uniprocessors) ONLY... WITH FIFO/RR priority scheduling {POSIX realtime
option} among *ALL-EQUAL-PRTY* threads.
regards,
alexander.
P.S. "....Similarly, 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."
--Butenhof_at_c.p.t
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk