tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Thread.h (1173B)


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