[cpp-threads] C++ committee meeting in Mont Tremblant
Boehm, Hans
hans.boehm at hp.com
Tue Oct 11 19:08:11 BST 2005
Kevlin -
I think I can offer a bit more clarification w.r.t. C compatibility:
My impression is that vendors tend to favor solutions that don't
preclude them from doing interesting things in header files that are
shared between C and C++. Hence there tends to be a push for low-level
solutions that work with both, plus possibly a higher level C++-only
solution that interoperates with it. This is clearly more important for
certain parts of the interfaces than others.
Hence the push for both (1) and (2), and similarly for a low-level
C-compatible atomics package, as well as a higher-level one built on top
of it.
We also heard that the C committee is not currently working on a
language revision, though it may issue technical reports (which I guess
are essentially standard but optional extensions, and might have the
same impact for features shared with C++). They appear to be looking to
the C++ committee to initially deal with these issues, and would clearly
like C-compatible solutions.
Other than that, this basically sounds right to me.
Hans
> -----Original Message-----
> From:
> Cpp-threads_decadentplace.org.uk-bounces at decadentplace.org.uk
> [mailto:Cpp-threads_decadentplace.org.uk-bounces at decadentplace
> .org.uk] On Behalf Of Kevlin Henney
> Sent: Tuesday, October 11, 2005 4:47 AM
> To: cpp-threads at decadentplace.org.uk
> Subject: Re: [cpp-threads] C++ committee meeting in Mont Tremblant
>
>
> In message <434B3320.3080709 at metalanguage.com>, Andrei Alexandrescu
> <andrei at metalanguage.com> writes
> >I think that's a great outcome, Hans, and I'd like to
> congratulate you
> >for so graciously taking ownership of this important project.
>
> Ditto.
>
> >I believe that the important tasks lying ahead are:
> >
> >1. Define the memory model
> >
> >2. Establish the atomic operations interface
> >
> >3. Develop the low- and mid-level API
> >
> >4. Leave room for future things (such as machine-wide atomic
> sections)?
>
> Yup, this looks good.
>
> >If (3) is modeled after Boost, I am worried that it will be quite
> >clunky. Sigh. Kevlin, Kevlin, where are you. Then, I'm not
> sure why the
> >low-level API would be necessary it the mid-level API is
> well-designed
> >(which implies it doesn't introduce inefficiencies or awkwardnesses
> >that would force one to go down to unprotected C-style APIs).
>
> The feedback that I'm getting is that there is some interest in the
> stuff I've proposed, but that Boost currently has a bit more
> mindshare,
> and there is encouragement to flesh both out in more detail.
> There are a
> couple of on the UK panel that have expressed interest in taking this
> further, so we are likely to try and organise something to do
> this. I'll
> let you know more when I know more.
>
> However, one point that Hans mentioned was the idea of
> standardising a C
> API, eg POSIX, out of the box. On these different approaches, let me
> repost and adapt something that I just posted to the UK reflector:
>
> There appear to be basically three general approaches to introducing
> threading facilities into C++ that are on the table at the
> moment (this
> is separate from the consideration of the memory model related work):
>
> (1) Rebadge the C binding of pthreads or something very C and very
> similar to it.
>
> (2) Present threading to the programmer as a C++ library.
> This is where
> the Boost proposal and my proposal currently fit. Different
> as they are,
> they have more in common at this level than not.
>
> (3) Extend the language with new concepts and syntax. This is where
> Lawrence Crowl's ideas fit (and likewise, those not on the
> table: Peter
> Buhr's work, Concurrent C++, etc).
>
> The common strength of (1) and (3) is that neither is necessarily
> C++-specific, albeit for quite different reasons. If C
> compatibility is
> important, this becomes a deciding factor that pretty much
> excludes (2),
> unless (2) is seen as a wrapper for (1) (cf <stdio.h> and <iostream>
> relationship). By being lowest common denominator and already
> out there,
> (1) obviously has some kind of appeal. But from a C++ (or even C)
> programming I can't say that the appeal is particularly great :->
>
> OTOH, (3) offers a common way to extend both C and C++ in a way that
> could be considered neutral to both languages. However,
> politically and
> practically this is more like a marathon steeplechase than the usual
> standards obstacle course. There is no point in second
> guessing what the
> C committee would be prepared to standardise without also involving
> them, which introduces more cycles into the whole process. I would
> expect this process, even if successful, to be too lengthy to
> fit into
> the current C++ standardisation schedule. The inclusion of what is
> effectively a new type system is likely to be seen as too much of a
> disturbance on the core language.
>
> There is of course the deeper question of whether any kind of C
> compatibility is genuinely important. Although C99 has not actually
> killed off C, it has made many people realise how much nicer
> a language
> it was in its previous incarnations. C is not dying, but I
> don't see C99
> as giving it a boost of life. How much more successful would
> a successor
> to C99 be, even if it included threading? My guess is that it
> wouldn't
> make as great a deal of difference in practice as it might in
> theory. So
> I am inclined to think that maybe a C-compatible approach is more
> something that sounds nice than something that is genuinely needed or
> will actually make a difference. Given that, I suggest that a C++
> approach should focus primarily on C++ and not try to carry
> around any
> more baggage than needed (it is already weighed down with
> quite enough
> :->).
>
> So, leaving C compatibility to one side still leaves (1) but
> also admits (2). In some ways, (1) is simpler, but it would
> need someone to champion it. It is certainly not ambitious,
> but it would get something that went by the name of a thread
> library into the standard. However, I suspect
> that it would leave a bad taste in the mouths of many.
>
> When it comes to (2) we can then enter a debate as to library
> style --
> Boost vs an executor-futures based approach -- but either way it is
> understanding what would be most likely to be a sufficiently good
> design, acceptable to the committee, embraced by programmers, etc. If
> (1) or (3) is what is wanted, then there is little point in
> wasting time
> on (2). However, I don't really believe that (1) or (3) is what is
> really wanted or expected.
>
> Does anyone have any strong (or weak) views on these points?
>
> Kevlin
> --
> ____________________________________________________________
>
> Kevlin Henney phone: +44 117 942 2990
> mailto:kevlin at curbralan.com mobile: +44 7801 073 508
> http://www.curbralan.com fax: +44 870 052 2289
> Curbralan: Consultancy + Training + Development + Review
> ____________________________________________________________
>
> --
> cpp-threads mailing list
> cpp-threads at decadentplace.org.uk
> http://decadentplace.org.uk/mailman/listinfo/cpp-threads_decad
entplace.org.uk
--
cpp-threads mailing list
cpp-threads at decadentplace.org.uk
http://decadentplace.org.uk/mailman/listinfo/cpp-threads_decadentplace.org.uk
More information about the cpp-threads
mailing list