39 #ifndef ORO_CORELIB_ATOMIC_MWMR_QUEUE_HPP 40 #define ORO_CORELIB_ATOMIC_MWMR_QUEUE_HPP 43 #include "../os/CAS.hpp" 113 unsigned short r = start.
_index[1];
120 while( r != start.
_index[1]) {
146 if ( newval.
_index[0] == _size )
152 return &_buf[ oldval.
_index[0] ];
173 if ( newval.
_index[1] == _size )
179 return &_buf[oldval.
_index[1] ];
245 while (c != _size ) {
270 }
while( !
os::CAS(loc, null, value));
289 }
while( result == 0 || !
os::CAS(loc, result, null) );
299 return _buf[_indxes.
_index[1] ];
307 for(
int i = 0 ; i !=
_size; ++i) {
bool CAS(volatile T *addr, const V &expected, const W &value)
CachePtrType recover_r() const
AtomicMWMRQueue(unsigned int size)
volatile SIndexes _indxes
volatile C * CachePtrType
bool enqueue(const T &value)
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
AtomicQueue< T >::size_type size_type
size_type capacity() const
AtomicMWMRQueue(const AtomicQueue< T > &)