diff options
| author | Chris Lattner <sabre@nondot.org> | 2004-01-17 19:54:29 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2004-01-17 19:54:29 +0000 |
| commit | 440f87eea20f11ea86822816fae965956795d6d3 (patch) | |
| tree | be84096b985cf4b719e9e556230c898afc2db9cc /include/Support/ThreadSupport.h | |
| parent | 64811a3e184a01cd8fde35a91f79e92d7314a63c (diff) | |
Revision of Brian's threading support library to be a bit more generic and
platform independent. This code is completely untested (but never used),
and needs autoconf support for detecting pthreads, but it's a start, and
deletes two emails from my inbox. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10906 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/Support/ThreadSupport.h')
| -rw-r--r-- | include/Support/ThreadSupport.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/Support/ThreadSupport.h b/include/Support/ThreadSupport.h new file mode 100644 index 0000000000..1a5f005f7c --- /dev/null +++ b/include/Support/ThreadSupport.h @@ -0,0 +1,41 @@ +//===-- Support/ThreadSupport.h - Generic threading support -----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by the LLVM research group and is distributed under +// the University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines platform-agnostic interfaces that can be used to write +// multi-threaded programs. Autoconf is used to chose the correct +// implementation of these interfaces, or default to a non-thread-capable system +// if no matching system support is available. +// +//===----------------------------------------------------------------------===// + +#ifndef SUPPORT_THREADSUPPORT_H +#define SUPPORT_THREADSUPPORT_H + +// FIXME: We need autoconf support to detect pthreads! +#if 0 +#include "Support/ThreadSupport-PThreads.h" +#else +#include "Support/ThreadSupport-NoSupport.h" +#endif // If no system support is available + +namespace llvm { + /// LockHolder - Instances of this class acquire a given Lock when constructed + /// and hold that lock until destruction. + /// + class MutexLocker { + Mutex &M; + MutexLocker(const LockHolder &); // DO NOT IMPLEMENT + void operator=(const MutexLocker&); // DO NOT IMPLEMENT + public: + MutexLocker(Mutex &m) : M(m) { M.acquire(); } + ~MutexLocker() { M.release(); } + }; +} + +#endif // SUPPORT_THREADSUPPORT_H |
