Main Page
Namespaces
Namespace List
Namespace Members
All
Enumerations
Enumerator
Classes
Class List
Class Members
All
Functions
Variables
Typedefs
Files
File List
File Members
All
Functions
Variables
Macros
src
lib
mutex_w32.cpp
Go to the documentation of this file.
1
8
/*****************************************************************************
9
** Platform Check
10
*****************************************************************************/
11
12
#include <ecl/config/ecl.hpp>
13
#if defined(ECL_IS_WIN32)
14
15
/*****************************************************************************
16
** Includes
17
*****************************************************************************/
18
19
#include <
ecl/exceptions/standard_exception.hpp
>
20
#include "../../include/ecl/threads/mutex_w32.hpp"
21
22
/*****************************************************************************
23
** Namespaces
24
*****************************************************************************/
25
26
namespace
ecl
{
27
28
/*****************************************************************************
29
* Mutex Class Methods
30
*****************************************************************************/
31
32
Mutex::Mutex(
const
bool
locked) : number_locks(0) {
33
InitializeCriticalSection(&
mutex
);
// has no return value
34
if
( locked ) {
35
this->lock();
36
}
37
}
38
39
Mutex::~Mutex() {
40
DeleteCriticalSection(&
mutex
);
// has no return value
41
}
42
43
void
Mutex::lock() {
44
InterlockedIncrement((
long
*)&number_locks);
45
EnterCriticalSection(&
mutex
);
// has no return value
46
}
47
48
bool
Mutex::trylock(
Duration
&duration) {
49
return
trylock();
50
}
51
52
bool
Mutex::trylock() {
53
if
(number_locks > 0)
54
return
false
;
55
lock();
56
return
true
;
57
}
58
59
void
Mutex::unlock()
60
{
61
LeaveCriticalSection( &
mutex
);
62
InterlockedDecrement((
long
*)&number_locks);
63
}
64
65
}
// namespace ecl
66
67
#endif
/* ECL_IS_WIN32 */
mutex
ecl::Mutex mutex
Definition:
examples/mutex.cpp:25
Duration
TimeStamp Duration
standard_exception.hpp
ecl
Embedded control libraries.
ecl_threads
Author(s): Daniel Stonier
autogenerated on Wed Mar 2 2022 00:16:43