[vtk-developers] Change in VTK[master]: Added support for atomic integers.

Sean McBride sean at rogue-research.com
Tue Aug 20 13:26:33 EDT 2013


On Tue, 20 Aug 2013 12:56:07 -0400, Berk Geveci said:

>Keep in mind that we want to support lots of platforms from various
>desktops to supercomputers to potentially embedded systems.

All the more reason to use std::atomic, no?  It's new, so isn't widely supported yet, but going forward it seems preferable.  Newest gcc and clang both claim to fully support C++11 now.

>> Was the OSAtomicIncrement32/64Barrier() call deliberately weakened to
>> OSAtomicIncrement32/64()?  The Windows InterlockIncrement() is documented
>to use a
>> memory barrier, and VTK on OS X did before, so...
>
>It was deliberate change based on the documentation, which says:
>
> *SNIP*
>
>What we are doing in vtkTimeStamp falls into "simply incrementing a global
>counter", which justifies using a much faster implementation in my opinion.
>What do you think? We'll probably have to revisit what AtomicInts do under
>covers if people start using them for other purposes than counters.

Well, I am not a multithreading expert, but I know enough to know that it's playing with fire. :)  The docs you  quote do say "Most code should use the barrier functions to ensure that memory shared between threads is properly synchronized".

If you think the weaker non-barrier version is sufficient, why on Windows do you use InterlockedIncrement() and not InterlockedIncrementNoFence()?

Cheers,

-- 
____________________________________________________________
Sean McBride, B. Eng                 sean at rogue-research.com
Rogue Research                        www.rogue-research.com 
Mac Software Developer              Montréal, Québec, Canada





More information about the vtk-developers mailing list