Is assignment to pointer atomic?

C

Christopher

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?
 
V

Victor Bazarov

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
 
M

madamemandm

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
 
C

Christopher

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?
 
V

Victor Bazarov

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
 
J

Juha Nieminen

Christopher said:
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.)
 
J

Joshua Maurice

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?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,776
Messages
2,569,603
Members
45,190
Latest member
Martindap

Latest Threads

Top