summaryrefslogtreecommitdiff
path: root/src/atomic-polyfill.h
blob: 1c5f414fa13a81d350f4b6e7d32e755ad6654190 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef SRC_ATOMIC_POLYFILL_H_
#define SRC_ATOMIC_POLYFILL_H_

#include "util.h"

namespace nonstd {

template <typename T>
struct atomic {
  atomic() = default;
  T exchange(T value) { return __sync_lock_test_and_set(&value_, value); }
  T value_ = T();
  DISALLOW_COPY_AND_ASSIGN(atomic);
};

}  // namespace nonstd

#endif  // SRC_ATOMIC_POLYFILL_H_