source: trunk/include/qmutex.h@ 138

Last change on this file since 138 was 2, checked in by dmik, 20 years ago

Imported xplatform parts of the official release 3.3.1 from Trolltech

  • Property svn:keywords set to Id
File size: 2.7 KB
Line 
1/****************************************************************************
2** $Id: qmutex.h 2 2005-11-16 15:49:26Z dmik $
3**
4** Definition of QMutex class
5**
6** Created : 931107
7**
8** Copyright (C) 1992-2002 Trolltech AS. All rights reserved.
9**
10** This file is part of the tools module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38#ifndef QMUTEX_H
39#define QMUTEX_H
40
41#ifndef QT_H
42#include "qglobal.h"
43#endif // QT_H
44
45#if defined(QT_THREAD_SUPPORT)
46
47class QMutexPrivate;
48
49const int Q_MUTEX_NORMAL = 0;
50const int Q_MUTEX_RECURSIVE = 1;
51
52class Q_EXPORT QMutex
53{
54 friend class QThread;
55 friend class QWaitCondition;
56 friend class QWaitConditionPrivate;
57
58public:
59 QMutex(bool recursive = FALSE);
60 virtual ~QMutex();
61
62 void lock();
63 void unlock();
64 bool locked();
65 bool tryLock();
66
67private:
68 QMutexPrivate * d;
69
70#if defined(Q_DISABLE_COPY)
71 QMutex( const QMutex & );
72 QMutex &operator=( const QMutex & );
73#endif
74};
75
76class Q_EXPORT QMutexLocker
77{
78public:
79 QMutexLocker( QMutex * );
80 ~QMutexLocker();
81
82 QMutex *mutex() const;
83
84private:
85 QMutex *mtx;
86
87#if defined(Q_DISABLE_COPY)
88 QMutexLocker( const QMutexLocker & );
89 QMutexLocker &operator=( const QMutexLocker & );
90#endif
91};
92
93inline QMutexLocker::QMutexLocker( QMutex *m )
94 : mtx( m )
95{
96 if ( mtx ) mtx->lock();
97}
98
99inline QMutexLocker::~QMutexLocker()
100{
101 if ( mtx ) mtx->unlock();
102}
103
104inline QMutex *QMutexLocker::mutex() const
105{
106 return mtx;
107}
108
109#endif
110
111#endif
Note: See TracBrowser for help on using the repository browser.