🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.c++.moderated
Article #27

Re: Meaning of the specifier volatile?

#27
From: Brian Thorstad
Date: Thu, 04 Jan 1996 00:26
48 lines
2902 bytes
X-Original-Date: 03 Jan 1996 14:10:13 GMT

In article <4cb5i3$5mr@netlab.cs.rpi.edu> Dave Nulton <dnult@axiom.net> writes:

   I'm no expert but here is what I know.  The specifier volatile is 
   a directive to the compiler that the variable declared volatile 
   can change at any moment.  The compiler will then make no 
   assumptions about the contents of this variable, and will always 
   re-check its value when used.  An example of something that might 
   use volatile variables is:  a hardware interface to your PC which 
   reads analog data and converts it to digital.  Your program may 
   read the data from the PC bus.  However this data is always 
   changing and your program should make know assumptions that the 
   data is the same - it should always recheck the value.

I believe volatile directs the compiler to not optimize the variable
as the value can change w/o the compiler being aware.  The compiler
will not "always recheck the value", but will do exactly what you
coded -- nothing more, nothing less.  It is up to the programmer to
appropriately access this value.  A classic example is accessing such
a value inside a loop, where normal optimization might pull that
access outside the loop.  Volatile can prevent this.

>From the ARM:  "volatile is a hint to the compiler to avoid aggressive
optimization involving the object because the value of the object may
be changed by means undetectable by a compiler."

My $0.02.
Brian

   I'm sure there are other less complicated applications which may 
   benefit from volatile variables.  I'm sure one of the many other 
   experts on the net can elaborate.

   -dnult@axiom.net
-- 

+---------------------------+----------------------------------+
| Brian Thorstad            | Data General Corporation         |
|  (thorstad@dg-rtp.dg.com) |                                  |
| Voice: (919) 248-6062     | 62 T.W. Alexander Dr.            |
| Fax:   (919) 248-6108     | Research Triangle Park, NC 27709 |
+---------------------------+----------------------------------+

    [ comp.lang.c++.moderated is a moderated newsgroup.  Submit articles ]
    [  to <c++-submit@netlab.cs.rpi.edu>.  The moderation policy can be  ]
    [   retrieved from <http://netlab.cs.rpi.edu/~cppmods/guide.html>.   ]
    [    Moderators can be reached at: c++-request@netlab.cs.rpi.edu.    ]
Technical Details
Message-ID: <4cf6qq$g0e@netlab.cs.rpi.edu>
Path: arc1-ca.pugleaf.net!library.erc.clarkson.edu!rpi!not-for-mail
References: <4c9740$27n@netlab.cs.rpi.edu> <4cb5i3$5mr@netlab.cs.rpi.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!library.erc.clarkson.edu!rpi!not-for-mail
From: thorstad@dg-rtp.dg.com (Brian Thorstad)
Newsgroups: comp.lang.c++.moderated,comp.lang.c++
Subject: Re: Meaning of the specifier volatile?
Date: 4 Jan 1996 00:26:02 -0000
Organization: Data General Corporation, RTP, NC
Sender: cppmods@netlab.cs.rpi.edu
Approved: herbs@connobj.com
Message-ID: <4cf6qq$g0e@netlab.cs.rpi.edu>
References: <4c9740$27n@netlab.cs.rpi.edu> <4cb5i3$5mr@netlab.cs.rpi.edu>
NNTP-Posting-Host: netlab.cs.rpi.edu