Thread.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Windows/Thread.h
  2. #ifndef __WINDOWS_THREAD_H
  3. #define __WINDOWS_THREAD_H
  4. #include "Defs.h"
  5. extern "C"
  6. {
  7. #include "../../C/Threads.h"
  8. }
  9. namespace NWindows {
  10. class CThread
  11. {
  12. ::CThread thread;
  13. public:
  14. CThread() { Thread_Construct(&thread); }
  15. ~CThread() { Close(); }
  16. bool IsCreated() { return Thread_WasCreated(&thread) != 0; }
  17. HRes Close() { return Thread_Close(&thread); }
  18. HRes Create(THREAD_FUNC_RET_TYPE (THREAD_FUNC_CALL_TYPE *startAddress)(void *), LPVOID parameter)
  19. { return Thread_Create(&thread, startAddress, parameter); }
  20. HRes Wait() { return Thread_Wait(&thread); }
  21. #ifdef _WIN32
  22. DWORD Resume() { return ::ResumeThread(thread.handle); }
  23. DWORD Suspend() { return ::SuspendThread(thread.handle); }
  24. bool Terminate(DWORD exitCode) { return BOOLToBool(::TerminateThread(thread.handle, exitCode)); }
  25. int GetPriority() { return ::GetThreadPriority(thread.handle); }
  26. bool SetPriority(int priority) { return BOOLToBool(::SetThreadPriority(thread.handle, priority)); }
  27. #endif
  28. };
  29. }
  30. #endif