40 lines
635 B
C++
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_ */
|