MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/common/DoubleBuffer.hpp

40 lines
635 B
C++

/*
* DoubleBuffer.hpp
*
* Created on: 15 ìàð. 2021 ã.
* Author: titov
*/
#ifndef UMLIBRARY_COMMON_DOUBLEBUFFER_HPP_
#define UMLIBRARY_COMMON_DOUBLEBUFFER_HPP_
#include <utility>
template<typename V>
class DoubleBuffer {
bool flag = false;
std::pair<V, V> data;
public:
void write( V v );
V read() const;
};
template<typename V>
inline void DoubleBuffer<V>::write( V v ) {
( flag ? data.second : data.first ) = v;
flag = not flag;
}
template<typename V>
inline V DoubleBuffer<V>::read() const {
return flag ? data.first : data.second;
}
#endif /* UMLIBRARY_COMMON_DOUBLEBUFFER_HPP_ */