Slides for tomorrow night
Boehm, Hans
hans.boehm at hp.com
Mon Oct 18 19:23:21 BST 2004
The argument I usually make is that you want to use lock-based techniques
for 98% of your code, but the other 2% maybe what determines much
of the performance of your program.
Library implementers will understand that. In particular, I think
C++ basic_string implementations which reference count (a bad idea,
in my personal and controversial opinion) often dramatically slow
down programs if they rely on locks to protect the reference count.
Hans
> -----Original Message-----
> From: Andrei Alexandrescu [mailto:andrei at metalanguage.com]
> Sent: Monday, October 18, 2004 9:33 AM
> To: Doug Lea
> Cc: Kevlin Henney; Maged Michael; Doug Lea; Boehm, Hans; Ben
> Hutchings;
> pugh at cs.umd.edu
> Subject: Re: Slides for tomorrow night
>
>
> > Slide 7: Kill bullet "Simple, efficient synchronization
> > device". It is so simple that it is almost never a good idea :-)
>
> I totally agree. It's hard to come with good examples. Here I have a
> little story to tell with a ticker that periodically looks at stock
> data, and a stream of events that periodically writes to the
> stock data.
> The two shouldn't wait for one another, and the stream should work
> without a hitch if the ticker is not displayed. In such a setting,
> synchronization based on ordering (as shown in the example)
> would make,
> I believe, sense.
>
> > For emphasis, I'd include one of Hans's examples to show low-level
>
> Unfinished sentence... I'd be interested to hear the rest.
> Which example
> do you have in mind?
>
> > Slide 9: Maybe add something explaining that a typical "volatile
> > write" costs about half as much as a typical uncontended lock.
> >
> > Slide 10: You might note that CAS stuff needs to be in a new std
> > class.
> >
> > Slide 12: Add disadvantages: Subject to livelock, high
> memory contention,
> > hard to control backoffs, ...
> >
> > (I like lock free algorithms a lot, but that's because I
> know when not
> > to use them :-)
>
> Thanks, good points which I'll integrate. But I didn't think
> CAS-based
> programming is prone to livelocks... Maged?
>
> Overall, I would like to keep lock-free as a part of the argument.
> Otherwise, people will look at classic locking and will say, hey, we
> only need to define two special functions (lock constructor and lock
> destructor) that ensure memory consistency, and we're home
> free without
> the memory barrier and volatile stuff.
>
>
> Andrei
>
More information about the cpp-threads
mailing list