icl_core_logging/ThreadImplWin32.cpp
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 // This file is part of FZIs ic_workspace.
5 //
6 // This program is free software licensed under the LGPL
7 // (GNU LESSER GENERAL PUBLIC LICENSE Version 3).
8 // You can find a copy of this license in LICENSE folder in the top
9 // directory of the source code.
10 //
11 // © Copyright 2016 FZI Forschungszentrum Informatik, Karlsruhe, Germany
12 //
13 // -- END LICENSE BLOCK ------------------------------------------------
14 
15 //----------------------------------------------------------------------
22 //----------------------------------------------------------------------
23 #include "ThreadImplWin32.h"
24 
25 #include "Thread.h"
26 
27 namespace icl_core {
28 namespace logging {
29 
31  : m_thread_handle(0),
32  m_thread(thread)
33 {
34 }
35 
37 {
38  if (m_thread_handle != 0)
39  {
40  ::CloseHandle(m_thread_handle);
41  }
42 }
43 
45 {
46  DWORD result = ::WaitForSingleObject(m_thread_handle, INFINITE);
47  if (result == WAIT_OBJECT_0)
48  {
49  m_thread_id = 0;
50  }
51  else
52  {
53  // TODO: Error handling!
54  }
55 }
56 
58 {
59  m_thread_id = 0;
60  m_thread_handle = ::CreateThread(NULL, 0, ThreadImplWin32::runThread, this, 0, NULL);
61 
62  return m_thread_handle != 0;
63 }
64 
65 DWORD WINAPI ThreadImplWin32::runThread(void *arg)
66 {
67  ThreadImplWin32 *self = static_cast<ThreadImplWin32*>(arg);
68 
69  self->m_thread_id = ::GetCurrentThreadId();
70  self->m_thread->runThread();
71 
72  return 0;
73 }
74 
75 }
76 }
ThreadImplWin32(Thread *thread, icl_core::ThreadPriority priority)
Contains icl_core::logging::ThreadImplWin32.
Contains icl_core::logging::Thread.
int32_t ThreadPriority
Definition: os_thread.h:50


fzi_icl_core
Author(s):
autogenerated on Mon Jun 10 2019 13:17:58