MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / pushBack

Method pushBack

Engine/source/platform/threads/threadSafeDeque.h:376–403  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

374
375template< typename T >
376void ThreadSafeDeque< T >::pushBack( const ValueType& value )
377{
378 NodeRef prevNode;
379 NodeRef newNode;
380
381 NodeRef::unsafeWrite( newNode, new ( mFreeList ) Node( mFreeList, value ) );
382
383 while( 1 )
384 {
385 prevNode = getTail();
386 if( !prevNode )
387 {
388 newNode->mPrev = NULL;
389 if( mHead.trySetFromTo( NULL, newNode ) ) // use head so we synchronize with pushFront
390 break;
391 }
392 else
393 {
394 newNode->mPrev = prevNode;
395 if( prevNode->mNext.trySetFromTo( NULL, newNode, NodeRef::TAG_FailIfSet ) )
396 break;
397 }
398 }
399
400#ifdef TORQUE_DEBUG
401 dFetchAndAdd( mNumValues, 1 );
402#endif
403}
404
405template< typename T >
406bool ThreadSafeDeque< T >::tryPopFront( ValueType& outValue )

Callers 4

_onArrivalMethod · 0.45
addMethod · 0.45
processMethod · 0.45
submitPacketMethod · 0.45

Calls 2

trySetFromToMethod · 0.80
dFetchAndAddFunction · 0.50

Tested by

no test coverage detected