tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
lock_guard.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_MUTEX_LOCK_GUARD_HPP
4#define TETL_MUTEX_LOCK_GUARD_HPP
5
6#include <etl/_mutex/tags.hpp>
7
8namespace etl {
9
17template <typename MutexT>
18struct lock_guard {
19 using mutex_type = MutexT;
20
22 : _mutex{m}
23 {
24 _mutex.lock();
25 }
26
28 : _mutex{m}
29 {
30 }
31
32 ~lock_guard() { _mutex.unlock(); }
33
34 lock_guard(lock_guard const&) = delete;
35 auto operator=(lock_guard const&) -> lock_guard& = delete;
36
37private:
38 mutex_type& _mutex;
39};
40
41} // namespace etl
42
43#endif // TETL_MUTEX_LOCK_GUARD_HPP
Definition adjacent_find.hpp:8
Empty struct tag types used to specify locking strategy for etl::lock_guard, etl::scoped_lock,...
Definition tags.hpp:41
lock_guard(mutex_type &m)
Definition lock_guard.hpp:21
auto operator=(lock_guard const &) -> lock_guard &=delete
MutexT mutex_type
Definition lock_guard.hpp:19
lock_guard(lock_guard const &)=delete
~lock_guard()
Definition lock_guard.hpp:32
lock_guard(mutex_type &m, adopt_lock_t)
Definition lock_guard.hpp:27