annotate base/Thread.h @ 498:fdf5930b7ccc

* Bring FeatureWriter and RDFFeatureWriter into the fold (from Runner) so that we can use them to export features from SV as well
author Chris Cannam
date Fri, 28 Nov 2008 13:47:11 +0000
parents 115f60df1e4d
children c01cbe41aeb5
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@109 16 #ifndef _THREAD_H_
Chris@109 17 #define _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@392 37 virtual void run() = 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