LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 "Windows.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()
Unconditionally acquire the lock.
Definition: Mutex.cpp:91
bool release()
Unconditionally release the lock.
Definition: Mutex.cpp:101
MutexImpl(bool recursive=true)
Default Constructor.
Definition: Mutex.cpp:44
~MutexImpl()
Destructor.
Definition: Mutex.cpp:82
bool tryacquire()
Try to acquire the lock.
Definition: Mutex.cpp:111