Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
atomic_object.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_
6#define FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_
7
8#include <mutex>
9
10namespace fml {
11
12// A wrapper for an object instance that can be read or written atomically.
13template <typename T>
15 public:
16 AtomicObject() = default;
17 explicit AtomicObject(T object) : object_(object) {}
18
19 T Load() const {
20 std::scoped_lock lock(mutex_);
21 return object_;
22 }
23
24 void Store(const T& object) {
25 std::scoped_lock lock(mutex_);
26 object_ = object;
27 }
28
29 private:
30 mutable std::mutex mutex_;
31 T object_;
32};
33
34} // namespace fml
35
36#endif // FLUTTER_FML_SYNCHRONIZATION_ATOMIC_OBJECT_H_
AtomicObject(T object)
void Store(const T &object)
AtomicObject()=default
#define T