LLVM  3.7.0
Windows/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 using namespace sys;
24 
25 MutexImpl::MutexImpl(bool /*recursive*/)
26 {
27  data_ = new CRITICAL_SECTION;
28  InitializeCriticalSection((LPCRITICAL_SECTION)data_);
29 }
30 
32 {
33  DeleteCriticalSection((LPCRITICAL_SECTION)data_);
34  delete (LPCRITICAL_SECTION)data_;
35  data_ = 0;
36 }
37 
38 bool
40 {
41  EnterCriticalSection((LPCRITICAL_SECTION)data_);
42  return true;
43 }
44 
45 bool
47 {
48  LeaveCriticalSection((LPCRITICAL_SECTION)data_);
49  return true;
50 }
51 
52 bool
54 {
55  return TryEnterCriticalSection((LPCRITICAL_SECTION)data_);
56 }
57 
58 }
bool acquire()
Attempts to unconditionally acquire the lock.
Definition: Mutex.cpp:84
bool release()
Attempts to release the lock.
Definition: Mutex.cpp:94
MutexImpl(bool recursive=true)
Initializes the lock but doesn't acquire it.
Definition: Mutex.cpp:44
~MutexImpl()
Releases and removes the lock.
Definition: Mutex.cpp:75
bool tryacquire()
Attempts to acquire the lock without blocking.
Definition: Mutex.cpp:104