aboutsummaryrefslogtreecommitdiff
path: root/include/Support/ThreadSupport.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-01-17 19:54:29 +0000
committerChris Lattner <sabre@nondot.org>2004-01-17 19:54:29 +0000
commit440f87eea20f11ea86822816fae965956795d6d3 (patch)
treebe84096b985cf4b719e9e556230c898afc2db9cc /include/Support/ThreadSupport.h
parent64811a3e184a01cd8fde35a91f79e92d7314a63c (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.h41
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