2004-01-17 19:54:29 +00:00
|
|
|
//===-- 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.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
2005-02-27 19:05:24 +00:00
|
|
|
#ifndef LLVM_SUPPORT_THREADSUPPORT_H
|
|
|
|
#define LLVM_SUPPORT_THREADSUPPORT_H
|
2004-01-17 19:54:29 +00:00
|
|
|
|
2004-09-24 21:19:06 +00:00
|
|
|
#undef HAVE_PTHREAD_MUTEX_LOCK
|
|
|
|
|
|
|
|
#ifdef HAVE_PTHREAD_MUTEX_LOCK
|
2004-09-01 22:55:40 +00:00
|
|
|
#include "llvm/Support/ThreadSupport-PThreads.h"
|
2004-01-17 19:54:29 +00:00
|
|
|
#else
|
2004-09-01 22:55:40 +00:00
|
|
|
#include "llvm/Support/ThreadSupport-NoSupport.h"
|
2004-01-17 19:54:29 +00:00
|
|
|
#endif // If no system support is available
|
|
|
|
|
|
|
|
namespace llvm {
|
2004-01-17 22:48:06 +00:00
|
|
|
/// MutexLocker - Instances of this class acquire a given Lock when
|
|
|
|
/// constructed and hold that lock until destruction.
|
2004-01-17 19:54:29 +00:00
|
|
|
///
|
|
|
|
class MutexLocker {
|
|
|
|
Mutex &M;
|
2004-02-06 22:33:17 +00:00
|
|
|
MutexLocker(const MutexLocker &); // DO NOT IMPLEMENT
|
|
|
|
void operator=(const MutexLocker &); // DO NOT IMPLEMENT
|
2004-01-17 19:54:29 +00:00
|
|
|
public:
|
|
|
|
MutexLocker(Mutex &m) : M(m) { M.acquire(); }
|
|
|
|
~MutexLocker() { M.release(); }
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // SUPPORT_THREADSUPPORT_H
|