franky 1.1.4
A High-Level Motion API for Franka
Loading...
Searching...
No Matches
Public Member Functions | List of all members
franky::WaitFreeTripleBuffer< T > Class Template Reference

Wait-free, Single-Producer Single-Consumer (SPSC) triple buffer. More...

#include <wait_free_triple_buffer.hpp>

Public Member Functions

 WaitFreeTripleBuffer ()=default
 
 WaitFreeTripleBuffer (const T &initial_value)
 
void set (const T &value)
 Publish new data.
 
T getLastWritten () const
 Get the most recently written value from the writer's side.
 
T get ()
 Get the most recently published data.
 

Detailed Description

template<typename T>
class franky::WaitFreeTripleBuffer< T >

Wait-free, Single-Producer Single-Consumer (SPSC) triple buffer.

This buffer allows a single user thread to safely write data without ever blocking, and a single real-time loop to safely read the latest available data without locking or experiencing torn reads.

Constructor & Destructor Documentation

◆ WaitFreeTripleBuffer() [1/2]

template<typename T >
franky::WaitFreeTripleBuffer< T >::WaitFreeTripleBuffer ( )
default

◆ WaitFreeTripleBuffer() [2/2]

template<typename T >
franky::WaitFreeTripleBuffer< T >::WaitFreeTripleBuffer ( const T initial_value)
inlineexplicit

Member Function Documentation

◆ get()

template<typename T >
T franky::WaitFreeTripleBuffer< T >::get ( )
inline

Get the most recently published data.

  • Note: This method mutates internal read indices to securely take ownership of the newest buffer, hence it cannot be marked const.

◆ getLastWritten()

template<typename T >
T franky::WaitFreeTripleBuffer< T >::getLastWritten ( ) const
inline

Get the most recently written value from the writer's side.

Must only be called from the writer thread. Unlike get(), this does not consume the "new data" flag or interact with the reader in any way. Before the first set(), this returns a default-constructed T.

◆ set()

template<typename T >
void franky::WaitFreeTripleBuffer< T >::set ( const T value)
inline

Publish new data.


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