Thread.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #ifndef Thread_H
  2. #define Thread_H
  3. #include "Array.h"
  4. namespace Framework
  5. {
  6. class Thread;
  7. // Ein neuer Thread wie die Thread Klasse aus Java
  8. class Thread
  9. {
  10. protected:
  11. #ifdef WIN32
  12. void *threadHandle;
  13. unsigned long threadId;
  14. #else
  15. pthread_t threadHandle;
  16. #endif
  17. bool run;
  18. public:
  19. // Konstruktor
  20. __declspec( dllexport ) Thread();
  21. // Destruktor
  22. __declspec( dllexport ) ~Thread();
  23. // Startet den neuen Thread
  24. __declspec( dllexport ) void start();
  25. #ifdef WIN32
  26. // Pausiert den Thread (Nur für Windows)
  27. __declspec( dllexport ) void pause();
  28. // Setzt den Thread Fort (Nur für Windows)
  29. __declspec( dllexport ) void fortsetzen();
  30. #endif
  31. // Beendet den Thread
  32. __declspec( dllexport ) void ende();
  33. // Diese Funktion wird von dem neuen Thread ausgeführt.
  34. __declspec( dllexport ) virtual void thread();
  35. // Diese Funktion wird eufgerufen, nachdem die thread Funktion zuende ist
  36. __declspec( dllexport ) virtual void threadEnd();
  37. // prüft, ob der Thrad aktiv ist
  38. // return: true, falls der Thread läuft.
  39. // false, wenn der Thread beendet, pausiert oder noch nicht gestartet wurde.
  40. __declspec( dllexport ) bool läuft() const;
  41. // wartet zeit lang auf den Thread
  42. // zeit: Die Zeit, die auf den Thread gewartet werden soll. 1000 = 1 Sekunde
  43. __declspec( dllexport ) int warteAufThread( int zeit ) const;
  44. #ifdef WIN32
  45. // Gibt ein Handle auf den Thread zurück (Nur für Windows)
  46. __declspec( dllexport ) void *getThreadHandle() const;
  47. #endif
  48. };
  49. #ifdef WIN32
  50. // Diese Funktion wird fon der Thread Klasse benutzt um einen thread zu starten
  51. __declspec( dllexport ) unsigned long __stdcall threadStart( void *param );
  52. #else
  53. // Diese Funktion wird fon der Thread Klasse benutzt um einen thread zu starten
  54. void *threadStart( void *param ); // startet thread
  55. #endif
  56. // Eine Klasse, die alle aktuell laufenden Thread Objekte speichert
  57. class ThreadRegister
  58. {
  59. private:
  60. Array< Thread* > threads;
  61. public:
  62. // Fügt einen neuen Thread hinzu
  63. // t: Der Thread, der hinzugefügt werden soll
  64. void add( Thread *t );
  65. // Entfernt einen neuen Thread
  66. // t: Der Thread, der entfernt werden soll
  67. void remove( Thread *t );
  68. // Überprüft, ob ein Zeiger auf ein gültiges Thread Objekt zeigt, oder ob es schon gelöscht wurde
  69. // t: Der Zeiger, der geprüft werden soll
  70. bool isThread( Thread *t ) const;
  71. };
  72. }
  73. #endif