DotNetDupe
4.0.6
C++17/20 Implementation of the .NET Base Class Library (BCL)
Toggle main menu visibility
Loading...
Searching...
No Matches
CriticalSection.cpp
Go to the documentation of this file.
1
#include "
pch.h
"
2
#include "
System/Threading/CriticalSection.h
"
3
#include <mutex>
4
5
namespace
DotNetDupe
{
6
namespace
System
{
7
namespace
Threading
{
8
9
struct
CriticalSection::Impl {
10
std::recursive_mutex mtx;
11
};
12
13
CriticalSection::CriticalSection
() : m_pImpl(new Impl()) {}
14
15
CriticalSection::~CriticalSection
() {
17
if
(m_pImpl) {
18
delete
m_pImpl;
19
m_pImpl =
nullptr
;
20
}
21
}
22
23
void
CriticalSection::Enter
() {
25
if
(m_pImpl) {
26
m_pImpl->mtx.lock();
27
}
28
}
29
30
void
CriticalSection::Leave
() {
32
if
(m_pImpl) {
33
m_pImpl->mtx.unlock();
34
}
35
}
36
37
bool
CriticalSection::TryEnter
() {
39
return
m_pImpl ? m_pImpl->mtx.try_lock() :
false
;
40
}
41
}
42
}
43
}
CriticalSection.h
Provides a re-entrant mutual exclusion primitive for thread synchronization.
DotNetDupe::System::Threading::CriticalSection::TryEnter
bool TryEnter()
Attempts to enter a critical section without blocking.
Definition
CriticalSection.cpp:37
DotNetDupe::System::Threading::CriticalSection::~CriticalSection
~CriticalSection() override
Destructor releasing critical section resources.
Definition
CriticalSection.cpp:15
DotNetDupe::System::Threading::CriticalSection::Enter
void Enter()
Waits for ownership of the specified critical section object.
Definition
CriticalSection.cpp:23
DotNetDupe::System::Threading::CriticalSection::Leave
void Leave()
Releases ownership of the critical section object.
Definition
CriticalSection.cpp:30
DotNetDupe::System::Threading::CriticalSection::CriticalSection
CriticalSection()
Initializes a new instance of the CriticalSection class.
Definition
CriticalSection.cpp:13
DotNetDupe::System::Threading
Definition
AbandonedMutexException.h:11
DotNetDupe::System
Definition
Action.h:11
DotNetDupe
Definition
IServiceCollection.h:7
pch.h
DotNetDupe
CriticalSection.cpp
Generated by
1.18.0