LLVM  8.0.1
Mutex.inc
Go to the documentation of this file.
1 //===- llvm/Support/Win32/Mutex.inc - Win32 Mutex Implementation -*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements the Win32 specific (non-pthread) Mutex class.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 //===----------------------------------------------------------------------===//
15 //=== WARNING: Implementation here must contain only generic Win32 code that
16 //=== is guaranteed to work on *all* Win32 variants.
17 //===----------------------------------------------------------------------===//
18 
19 #include "WindowsSupport.h"
20 #include "llvm/Support/Mutex.h"
21 
22 namespace llvm {
23 
24 sys::MutexImpl::MutexImpl(bool /*recursive*/)
25 {
26  data_ = new CRITICAL_SECTION;
27  InitializeCriticalSection((LPCRITICAL_SECTION)data_);
28 }
29 
31 {
32  DeleteCriticalSection((LPCRITICAL_SECTION)data_);
33  delete (LPCRITICAL_SECTION)data_;
34  data_ = 0;
35 }
36 
37 bool
39 {
40  EnterCriticalSection((LPCRITICAL_SECTION)data_);
41  return true;
42 }
43 
44 bool
46 {
47  LeaveCriticalSection((LPCRITICAL_SECTION)data_);
48  return true;
49 }
50 
51 bool
53 {
54  return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);
55 }
56 
57 }
bool acquire()
Attempts to unconditionally acquire the lock.
Definition: Mutex.cpp:86
This class represents lattice values for constants.
Definition: AllocatorList.h:24
bool release()
Attempts to release the lock.
Definition: Mutex.cpp:96
MutexImpl(bool recursive=true)
Initializes the lock but doesn't acquire it.
Definition: Mutex.cpp:45
~MutexImpl()
Releases and removes the lock Destructor.
Definition: Mutex.cpp:77
bool tryacquire()
Attempts to acquire the lock without blocking.
Definition: Mutex.cpp:106