File indexing completed on 2024-12-22 04:35:01
0001 /* 0002 SPDX-FileCopyrightText: 2009 Nokia Corporation and /or its subsidiary(-ies). 0003 Contact: Qt Software Information (qt-info@nokia.com) 0004 0005 This file is part of the QtCore module of the Qt Toolkit. 0006 0007 $QT_BEGIN_LICENSE:LGPL$ 0008 Commercial Usage 0009 Licensees holding valid Qt Commercial licenses may use this file in 0010 accordance with the Qt Commercial License Agreement provided with the 0011 Software or, alternatively, in accordance with the terms contained in 0012 a written agreement between you and Nokia. 0013 0014 GNU Lesser General Public License Usage 0015 Alternatively, this file may be used under the terms of the GNU Lesser 0016 General Public License version 2.1 as published by the Free Software 0017 Foundation and appearing in the file LICENSE.LGPL included in the 0018 packaging of this file. Please review the following information to 0019 ensure the GNU Lesser General Public License version 2.1 requirements 0020 will be met: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 0021 0022 In addition, as a special exception, Nokia gives you certain 0023 additional rights. These rights are described in the Nokia Qt LGPL 0024 Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 0025 package. 0026 0027 GNU General Public License Usage 0028 Alternatively, this file may be used under the terms of the GNU 0029 General Public License version 3.0 as published by the Free Software 0030 Foundation and appearing in the file LICENSE.GPL included in the 0031 packaging of this file. Please review the following information to 0032 ensure the GNU General Public License version 3.0 requirements will be 0033 met: https://www.gnu.org/licenses/gpl-3.0.html. 0034 0035 If you are unsure which license is appropriate for your use, please 0036 contact the sales department at qt-sales@nokia.com. 0037 $QT_END_LICENSE$ 0038 0039 */ 0040 0041 #ifndef QMUTEXPOOL_P_H 0042 #define QMUTEXPOOL_P_H 0043 0044 // 0045 // W A R N I N G 0046 // ------------- 0047 // 0048 // This file is not part of the Qt API. It exists for the convenience 0049 // of QSettings. This header file may change from version to 0050 // version without notice, or even be removed. 0051 // 0052 // We mean it. 0053 // 0054 0055 #include "QtCore/QtCore/QMutex" 0056 0057 #ifndef QT_NO_THREAD 0058 0059 QT_BEGIN_NAMESPACE 0060 0061 class Q_CORE_EXPORT QMutexPool 0062 { 0063 public: 0064 explicit QMutexPool(bool recursive = false, int size = 128); 0065 ~QMutexPool(); 0066 0067 QMutex *get(const void *address); 0068 static QMutexPool *instance(); 0069 static QMutex *globalInstanceGet(const void *address); 0070 0071 private: 0072 QMutex mutex; 0073 QMutex **mutexes; 0074 int count; 0075 bool recurs; 0076 }; 0077 0078 extern Q_CORE_EXPORT QMutexPool *qt_global_mutexpool; 0079 0080 QT_END_NAMESPACE 0081 0082 #endif // QT_NO_THREAD 0083 0084 #endif // QMUTEXPOOL_P_H