Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
shared_mutex.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_SHARED_MUTEX_H_
6#define FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_
7
8namespace fml {
9
10// Interface for a reader/writer lock.
12 public:
13 static SharedMutex* Create();
14 virtual ~SharedMutex() = default;
15
16 virtual void Lock() = 0;
17 virtual void LockShared() = 0;
18 virtual void Unlock() = 0;
19 virtual void UnlockShared() = 0;
20};
21
22// RAII wrapper that does a shared acquire of a SharedMutex.
24 public:
25 explicit SharedLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) {
26 shared_mutex_.LockShared();
27 }
28
29 ~SharedLock() { shared_mutex_.UnlockShared(); }
30
31 private:
32 SharedMutex& shared_mutex_;
33};
34
35// RAII wrapper that does an exclusive acquire of a SharedMutex.
37 public:
38 explicit UniqueLock(SharedMutex& shared_mutex) : shared_mutex_(shared_mutex) {
39 shared_mutex_.Lock();
40 }
41
42 ~UniqueLock() { shared_mutex_.Unlock(); }
43
44 private:
45 SharedMutex& shared_mutex_;
46};
47
48} // namespace fml
49
50#endif // FLUTTER_FML_SYNCHRONIZATION_SHARED_MUTEX_H_
SharedLock(SharedMutex &shared_mutex)
static SharedMutex * Create()
virtual void UnlockShared()=0
virtual ~SharedMutex()=default
virtual void Lock()=0
virtual void LockShared()=0
virtual void Unlock()=0
UniqueLock(SharedMutex &shared_mutex)