lyx_mirror/src/support/mutex.h

64 lines
1000 B
C
Raw Normal View History

// -*- C++ -*-
/**
* \file mutex.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Peter Kümmel
*
* Full author contact details are available in file CREDITS.
*
* A collection of string helper functions that works with string.
* Some of these would certainly benefit from a rewrite/optimization.
*/
#ifndef MUTEX_H
#define MUTEX_H
namespace lyx {
class Mutex
{
public:
Mutex();
~Mutex();
/// Scope based locking:
/// Usage:
/// >>> unlocked
/// {
/// Mutex::Locker locker(a_Mutex_ptr);
/// >>> locked
/// }
/// >>> unlocked
class Locker
{
public:
Locker(Mutex*);
~Locker();
private:
Locker();
Locker(const Locker& rhs);
Locker& operator=(const Locker& rhs);
Mutex* mutex_;
};
// pseude-value semantic
// needed by GuiPrefs which makes a copy
Mutex(const Mutex&);
Mutex& operator=(const Mutex&);
private:
struct Private;
Private* d;
};
} // namespace lyx
#endif