/[svn]/linuxsampler/trunk/src/common/Thread.h
ViewVC logotype

Contents of /linuxsampler/trunk/src/common/Thread.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 57 - (show annotations) (download) (as text)
Sun May 2 17:45:43 2004 UTC (19 years, 11 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 3149 byte(s)
* src/common/Thread.cpp: method StartThread() now blocks until thread
  actually runs, mlockall() will only be applied for realtime threads
* libtoolized liblinuxsampler
* initiated automatic unit tests against the LinuxSampler codebase
  (see src/testcases): already added a couple of tests for the Thread and
  Mutex classes, you have to explicitly compile the unit tests by running
  'make testcases' (you need to have cppunit installed though) and then you
  can run the console version of the test runner by calling
  'src/testcases/linuxsamplertest'
* src/Sampler.h: added API documentation

1 /***************************************************************************
2 * *
3 * LinuxSampler - modular, streaming capable sampler *
4 * *
5 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck *
6 * *
7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * This program is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program; if not, write to the Free Software *
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
20 * MA 02111-1307 USA *
21 ***************************************************************************/
22
23 #ifndef __THREAD_H__
24 #define __THREAD_H__
25
26 #include <iostream>
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <sched.h>
30 #include <sys/mman.h>
31 #include <memory.h>
32 #include <pthread.h>
33 #include <errno.h>
34
35 /// Abstract base class for classes that need to run in an own thread.
36 class Thread {
37 public:
38 Thread(bool RealTime, int PriorityMax, int PriorityDelta);
39 virtual ~Thread();
40 virtual int StartThread();
41 virtual int StopThread();
42 virtual int SignalStartThread();
43 virtual int SignalStopThread();
44 virtual bool IsRunning() { return Running; }
45 virtual int SetSchedulingPriority(); //FIXME: should be private
46 virtual void EnableDestructor(); //FIXME: should be private
47 virtual int Destructor(); //FIXME: should be private
48 virtual int Main() = 0; ///< This method needs to be implemented by the descendant and is the entry point for the new thread. FIXME: should be protected
49 private:
50 pthread_t __thread_id;
51 pthread_key_t __thread_destructor_key;
52 pthread_mutex_t __thread_state_mutex;
53 pthread_cond_t __thread_start_condition;
54 pthread_cond_t __thread_exit_condition;
55 int PriorityMax;
56 int PriorityDelta;
57 bool Running;
58 bool isRealTime;
59 };
60
61 // Callback functions for the POSIX thread API
62 void* __pthread_launcher(void* thread);
63 void __pthread_destructor(void* thread);
64
65 #endif // __THREAD_H__

  ViewVC Help
Powered by ViewVC