VTK
Public Member Functions | List of all members
vtkAtomic< T > Class Template Reference

Provides support for atomic integers. More...

#include <vtkAtomic.h>

Inheritance diagram for vtkAtomic< T >:
[legend]
Collaboration diagram for vtkAtomic< T >:
[legend]

Public Member Functions

 vtkAtomic ()
 
 vtkAtomic (T val)
 
 vtkAtomic (const vtkAtomic< T > &atomic)
 
operator++ ()
 
operator++ (int)
 
operator-- ()
 
operator-- (int)
 
operator+= (T val)
 
operator-= (T val)
 
 operator T () const
 
operator= (T val)
 
vtkAtomic< T > & operator= (const vtkAtomic< T > &atomic)
 
load () const
 
void store (T val)
 

Detailed Description

template<typename T>
class vtkAtomic< T >

Provides support for atomic integers.

Objects of atomic types are C++ objects that are free from data races; that is, if one thread writes to an atomic object while another thread reads from it, the behavior is well-defined. vtkAtomic provides a subset of the std::atomic API and implementation for the following types, 32 bit signed and unsigned integers, 64 bit signed and unsigned integers, and pointers. For these types, vtkAtomic defines a number of operations that happen atomically - without interruption by another thread. Furthermore, these operations happen in a sequentially-consistent way and use full memory fences. This means that operations relating to atomic variables happen in the specified order and the results are made visible to other processing cores to guarantee proper sequential operation. Other memory access patterns supported by std::atomic are not currently supported.

Note that when atomic operations are not available on a particular platform or compiler, mutexes, which are significantly slower, are used as a fallback.

Definition at line 357 of file vtkAtomic.h.

Constructor & Destructor Documentation

template<typename T>
vtkAtomic< T >::vtkAtomic ( )
inline

Definition at line 363 of file vtkAtomic.h.

template<typename T>
vtkAtomic< T >::vtkAtomic ( val)
inline

Definition at line 367 of file vtkAtomic.h.

template<typename T>
vtkAtomic< T >::vtkAtomic ( const vtkAtomic< T > &  atomic)
inline

Definition at line 371 of file vtkAtomic.h.

Member Function Documentation

template<typename T>
T vtkAtomic< T >::operator++ ( )
inline

Definition at line 376 of file vtkAtomic.h.

template<typename T>
T vtkAtomic< T >::operator++ ( int  )
inline

Definition at line 381 of file vtkAtomic.h.

template<typename T>
T vtkAtomic< T >::operator-- ( )
inline

Definition at line 386 of file vtkAtomic.h.

template<typename T>
T vtkAtomic< T >::operator-- ( int  )
inline

Definition at line 391 of file vtkAtomic.h.

template<typename T>
T vtkAtomic< T >::operator+= ( val)
inline

Definition at line 396 of file vtkAtomic.h.

template<typename T>
T vtkAtomic< T >::operator-= ( val)
inline

Definition at line 402 of file vtkAtomic.h.

template<typename T>
vtkAtomic< T >::operator T ( ) const
inline

Definition at line 408 of file vtkAtomic.h.

template<typename T>
T vtkAtomic< T >::operator= ( val)
inline

Definition at line 413 of file vtkAtomic.h.

template<typename T>
vtkAtomic<T>& vtkAtomic< T >::operator= ( const vtkAtomic< T > &  atomic)
inline

Definition at line 419 of file vtkAtomic.h.

template<typename T>
T vtkAtomic< T >::load ( ) const
inline

Definition at line 425 of file vtkAtomic.h.

template<typename T>
void vtkAtomic< T >::store ( val)
inline

Definition at line 430 of file vtkAtomic.h.


The documentation for this class was generated from the following file: