Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   Is assignment to pointer atomic? (http://www.velocityreviews.com/forums/t752760-is-assignment-to-pointer-atomic.html)

Christopher 08-12-2011 02:47 PM

Is assignment to pointer atomic?
 
I disagree with my cooworker, but neither of us can seem to find any
documentation to support our belief.
Is assignment to a pointer guarenteed to be an atomic operation?


Victor Bazarov 08-12-2011 03:10 PM

Re: Is assignment to pointer atomic?
 
On 8/12/2011 10:47 AM, Christopher wrote:
> I disagree with my cooworker, but neither of us can seem to find any
> documentation to support our belief.
> Is assignment to a pointer guarenteed to be an atomic operation?


Not if said assignment takes more than one processor instruction,
probably. The new standard has a special section on atomics, perhaps
that's what you need to use... See the header <atomic>.

V
--
I do not respond to top-posted replies, please don't ask

madamemandm@yahoo.com 08-12-2011 04:04 PM

Re: Is assignment to pointer atomic?
 
On Aug 12, 10:10*am, Victor Bazarov <v.baza...@comcast.invalid> wrote:
> On 8/12/2011 10:47 AM, Christopher wrote:
>
> > I disagree with my cooworker, but neither of us can seem to find any
> > documentation to support our belief.
> > Is assignment to a pointer guarenteed to be an atomic operation?

>
> Not if said assignment takes more than one processor instruction,
> probably. *The new standard has a special section on atomics, perhaps
> that's what you need to use... *See the header <atomic>.
>


Even if it's a single processor instruction it's not guarenteed to be
atomic.
Read your processors manual to know when and when it isn't.

Martin Shobe

Christopher 08-12-2011 04:16 PM

Re: Is assignment to pointer atomic?
 
On Aug 12, 11:04*am, "madamema...@yahoo.com" <madamema...@yahoo.com>
wrote:
> On Aug 12, 10:10*am, Victor Bazarov <v.baza...@comcast.invalid> wrote:
>
> > On 8/12/2011 10:47 AM, Christopher wrote:

>
> > > I disagree with my cooworker, but neither of us can seem to find any
> > > documentation to support our belief.
> > > Is assignment to a pointer guarenteed to be an atomic operation?

>
> > Not if said assignment takes more than one processor instruction,
> > probably. *The new standard has a special section on atomics, perhaps
> > that's what you need to use... *See the header <atomic>.

>
> Even if it's a single processor instruction it's not guarenteed to be
> atomic.
> Read your processors manual to know when and when it isn't.
>
> Martin Shobe


Well, one would then conclude it depends not only on the compiler, but
also the processor. If we don't want to enforce the limitation that
the code should be compiled and executed on a particular processor,
and we wish to be as close to standard C++ as possible, then we should
indeed use a mutex around pointer assignment, no?


Victor Bazarov 08-12-2011 04:37 PM

Re: Is assignment to pointer atomic?
 
On 8/12/2011 12:16 PM, Christopher wrote:
> On Aug 12, 11:04 am, "madamema...@yahoo.com"<madamema...@yahoo.com>
> wrote:
>> On Aug 12, 10:10 am, Victor Bazarov<v.baza...@comcast.invalid> wrote:
>>
>>> On 8/12/2011 10:47 AM, Christopher wrote:

>>
>>>> I disagree with my cooworker, but neither of us can seem to find any
>>>> documentation to support our belief.
>>>> Is assignment to a pointer guarenteed to be an atomic operation?

>>
>>> Not if said assignment takes more than one processor instruction,
>>> probably. The new standard has a special section on atomics, perhaps
>>> that's what you need to use... See the header<atomic>.

>>
>> Even if it's a single processor instruction it's not guarenteed to be
>> atomic.
>> Read your processors manual to know when and when it isn't.
>>
>> Martin Shobe

>
> Well, one would then conclude it depends not only on the compiler, but
> also the processor. If we don't want to enforce the limitation that
> the code should be compiled and executed on a particular processor,
> and we wish to be as close to standard C++ as possible, then we should
> indeed use a mutex around pointer assignment, no?


If you can use a compiler that implements the new 'atomic' type, you
should. That will take care of the synchronization and exclusivity *if*
it's needed. See Chapter 29 of the new Standard.

V
--
I do not respond to top-posted replies, please don't ask

Juha Nieminen 08-12-2011 05:03 PM

Re: Is assignment to pointer atomic?
 
Christopher <cpisz@austin.rr.com> wrote:
> I disagree with my cooworker, but neither of us can seem to find any
> documentation to support our belief.
> Is assignment to a pointer guarenteed to be an atomic operation?


AFAIK the current C++ standard takes no stance whatsoever about the
atomicity of any operation (which means it's implementation-dependent).

The next standard will have some support for explicit atomic operations,
but I'm assuming that without the explicit keyword the atomicity of any
operation will still be undefined.

Whether it's an atomic operation eg. on an x86 or an x86-64 processor
artchitecture, I don't know. (Although it would be an interesting tidbit.)

Joshua Maurice 08-12-2011 09:58 PM

Re: Is assignment to pointer atomic?
 
On Aug 12, 7:47*am, Christopher <cp...@austin.rr.com> wrote:
> I disagree with my cooworker, but neither of us can seem to find any
> documentation to support our belief.
> Is assignment to a pointer guarenteed to be an atomic operation?


What do you mean by "atomic"? There are several possible uses here.
Are we talking "atomic" in terms of signal handlers? "Atomic" in terms
of threading? "Atomic" in terms of MMIO?


All times are GMT. The time now is 09:46 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.