Thread.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. class ThreadRegister
  57. {
  58. private:
  59. Array< Thread* > threads;
  60. public:
  61. void add( Thread *t );
  62. void remove( Thread *t );
  63. bool isThread( Thread *t ) const;
  64. };
  65. }
  66. #endif