Heads-up: volatile and C++

Michael N. Moran mike@mnmoran.org
Thu Apr 14 19:41:00 GMT 2005


Jason Merrill wrote:
> On Thu, 14 Apr 2005 10:12:37 -0400, "Michael N. Moran" <mike@mnmoran.org> wrote:
> 
> 
>>Jason Merrill wrote:
>>
>>>The C++ committee (well, a subgroup represented at this meeting by Hans
>>>Boehm) is working on a memory model that supports threaded programs.
>>
>>As someone who uses the C++ language and multi-threading
>>extensively in embedded systems, I have come to the following
>>belief/opinion.
>>
>>   The language (C++) *should not* have dependencies
>>   upon threading. IMHO, threading is a layer above a
>>   systems programming language, and having dependencies
>>   upon upper layers is evil.
> 
> 
> But the memory model for the language must provide semantics that make it
> possible for threaded programs to be written.  Currently, if you want to
> write a portable pthreads program you need to use a mutex around all uses
> of shared memory, because they are the only way to guarantee sequential
> memory ordering.  The volatile proposal provides a lighter-weight way to
> write portable code with explicit memory ordering.  You need this for
> lockless algorithms to work.

I am not arguing against such a language capability,
I am only arguing against overloading volatile to achieve
the goal. Thus, the other suggestions.


> It seems to me that the current specification of volatile already requires
> an lwsync around volatile reads and writes, to guarantee that all previous
> stores have been completed and later ones have not started.

I can see how you could arrive at this point-of-view
if you accept the view that the C++ language is responsible
for understanding multi-threading. However, in the absence
of that responsibility, there is no reason for the compiler
to perform this function.

I prefer requiring the programmer to be explicit,
and understand the environment for which he writes.

In the spirit of C++, I do not want to pay overhead
for features that I do not need or use. And, as an
embedded systems programmer, I need and use volatile
frequently.

-- 
Michael N. Moran           (h) 770 516 7918
5009 Old Field Ct.         (c) 678 521 5460
Kennesaw, GA, USA 30144    http://mnmoran.org

"So often times it happens, that we live our lives in chains
  and we never even know we have the key."
The Eagles, "Already Gone"

The Beatles were wrong: 1 & 1 & 1 is 1




More information about the Gcc mailing list