annotate base/Thread.h @ 1752:6d09d68165a4 by-id

Further review of ById: make IDs only available when adding a model to the ById store, not by querying the item directly. This means any id encountered in the wild must have been added to the store at some point (even if later released), which simplifies reasoning about lifecycles
author Chris Cannam
date Fri, 05 Jul 2019 15:28:07 +0100
parents ad5f892c0c4d
children
rev   line source
Chris@109 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@109 2
Chris@109 3 /*
Chris@109 4 Sonic Visualiser
Chris@109 5 An audio file viewer and annotation editor.
Chris@109 6 Centre for Digital Music, Queen Mary, University of London.
Chris@109 7 This file copyright 2006 Chris Cannam.
Chris@109 8
Chris@109 9 This program is free software; you can redistribute it and/or
Chris@109 10 modify it under the terms of the GNU General Public License as
Chris@109 11 published by the Free Software Foundation; either version 2 of the
Chris@109 12 License, or (at your option) any later version. See the file
Chris@109 13 COPYING included with this distribution for more information.
Chris@109 14 */
Chris@109 15
Chris@1581 16 #ifndef SV_THREAD_H
Chris@1581 17 #define SV_THREAD_H
Chris@109 18
Chris@109 19 #include <QThread>
Chris@244 20 #include <QMutexLocker>
Chris@109 21
Chris@408 22 #include "Profiler.h"
Chris@408 23
Chris@109 24 class Thread : public QThread
Chris@109 25 {
Chris@109 26 Q_OBJECT
Chris@109 27
Chris@109 28 public:
Chris@109 29 enum Type { RTThread, NonRTThread };
Chris@109 30
Chris@109 31 Thread(Type type = NonRTThread, QObject *parent = 0);
Chris@109 32
Chris@109 33 public slots:
Chris@109 34 void start();
Chris@109 35
Chris@392 36 protected:
Chris@1580 37 void run() override = 0;
Chris@392 38
Chris@109 39 private:
Chris@109 40 Type m_type;
Chris@109 41 };
Chris@109 42
Chris@244 43 class MutexLocker
Chris@244 44 {
Chris@244 45 public:
Chris@244 46 MutexLocker(QMutex *mutex, const char *name);
Chris@244 47 ~MutexLocker();
Chris@244 48
Chris@244 49 private:
Chris@244 50 class Printer {
Chris@244 51 public:
Chris@244 52 Printer(const char *name);
Chris@244 53 ~Printer();
Chris@244 54
Chris@244 55 private:
Chris@244 56 const char *m_name;
Chris@244 57 };
Chris@244 58
Chris@408 59 Profiler m_profiler;
Chris@244 60 Printer m_printer;
Chris@244 61 QMutexLocker m_locker;
Chris@244 62 };
Chris@244 63
Chris@109 64 #endif