23.08
Mutex.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017-2019 Arm Limited.
3
*
4
* SPDX-License-Identifier: MIT
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to
8
* deal in the Software without restriction, including without limitation the
9
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10
* sell copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in all
14
* copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
* SOFTWARE.
23
*/
24
#ifndef __ARM_COMPUTE_MUTEX_H__
25
#define __ARM_COMPUTE_MUTEX_H__
26
27
#include <mutex>
28
29
namespace
arm_compute
30
{
31
#ifndef NO_MULTI_THREADING
32
/** Wrapper of Mutex data-object */
33
using
Mutex
= std::mutex;
34
35
/** Wrapper of lock_guard data-object */
36
template
<
typename
Mutex>
37
using
lock_guard
= std::lock_guard<Mutex>;
38
39
/** Wrapper of lock_guard data-object */
40
template
<
typename
Mutex>
41
using
unique_lock
= std::unique_lock<Mutex>;
42
#else
/* NO_MULTI_THREADING */
43
/** Wrapper implementation of Mutex data-object */
44
class
Mutex
45
{
46
public
:
47
/** Default constructor */
48
Mutex
() =
default
;
49
/** Default destructor */
50
~
Mutex
() =
default
;
51
52
/** Lock */
53
void
lock() {};
54
55
/** Unlock */
56
void
unlock() {};
57
58
/** Try the lock.
59
*
60
* @return true.
61
*/
62
bool
try_lock()
63
{
64
return
true
;
65
}
66
};
67
68
/** Wrapper implementation of lock-guard data-object */
69
template
<
typename
Mutex>
70
class
lock_guard
71
{
72
public
:
73
typedef
Mutex
mutex_type;
74
75
public
:
76
explicit
lock_guard
(
Mutex
&m_)
77
:
m
(m_)
78
{
79
}
80
~
lock_guard
()
81
{
82
}
83
lock_guard
(
const
lock_guard
&) =
delete
;
84
85
private
:
86
mutex_type &
m
;
87
};
88
89
/** Wrapper implementation of unique-lock data-object */
90
template
<
typename
Mutex>
91
class
unique_lock
92
{
93
public
:
94
typedef
Mutex
mutex_type;
95
96
public
:
97
unique_lock
() noexcept :
m
(
nullptr
)
98
{
99
}
100
explicit
unique_lock
(mutex_type &
m
)
101
:
m
(&
m
)
102
{
103
}
104
unique_lock
(
const
unique_lock
&) =
delete
;
105
unique_lock
(
unique_lock
&&) =
default
;
106
unique_lock
&operator=(
const
unique_lock
&) =
delete
;
107
unique_lock
&operator=(
unique_lock
&&) =
default
;
108
~
unique_lock
() =
default
;
109
void
lock()
110
{
111
}
112
bool
try_lock()
113
{
114
return
true
;
115
}
116
void
unlock()
117
{
118
}
119
120
private
:
121
mutex_type *
m
;
122
};
123
#endif
/* NO_MULTI_THREADING */
124
}
125
#endif
/* __ARM_COMPUTE_MUTEX_H__ */
arm_compute::lock_guard
std::lock_guard< Mutex > lock_guard
Wrapper of lock_guard data-object.
Definition:
Mutex.h:37
arm_compute::unique_lock
std::unique_lock< Mutex > unique_lock
Wrapper of lock_guard data-object.
Definition:
Mutex.h:41
arm_compute::test::validation::m
const unsigned int m
Definition:
GEMMMatrixMultiplyNative.cpp:359
arm_compute::Mutex
std::mutex Mutex
Wrapper of Mutex data-object.
Definition:
Mutex.h:33
arm_compute
Copyright (c) 2017-2023 Arm Limited.
Definition:
introduction.dox:24
support
Mutex.h
Generated on Wed Aug 23 2023 13:07:14 for Compute Library by
1.8.17