summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/threading/thread_impl_win32.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-utils/threading/thread_impl_win32.cpp')
-rw-r--r--source/modules/asura-utils/threading/thread_impl_win32.cpp116
1 files changed, 57 insertions, 59 deletions
diff --git a/source/modules/asura-utils/threading/thread_impl_win32.cpp b/source/modules/asura-utils/threading/thread_impl_win32.cpp
index 61b1c13..c876be9 100644
--- a/source/modules/asura-utils/threading/thread_impl_win32.cpp
+++ b/source/modules/asura-utils/threading/thread_impl_win32.cpp
@@ -5,75 +5,73 @@
#if ASURA_THREAD_WIN32
-namespace AsuraEngine
-{
- namespace Threading
- {
-
- static DWORD WINAPI _thread_win32_runner(LPVOID param)
- {
- Threadable* thread = (Threadable*)param;
- return thread->Process(); // β
- }
-
- ThreadImplWin32::ThreadImplWin32()
- {
- }
+namespace_begin(AsuraEngine)
+namespace_begin(Threading)
- ThreadImplWin32::~ThreadImplWin32()
- {
- if (!m_Handle) return;
- ::CloseHandle(m_Handle);
- m_Handle = 0;
- }
+static DWORD WINAPI _thread_win32_runner(LPVOID param)
+{
+ Threadable* thread = (Threadable*)param;
+ return thread->Process(); // β
+}
- bool ThreadImplWin32::Start(Threadable* thread, uint32 stacksize/*=0*/)
- {
- assert(!IsRunning());
- m_Handle = ::CreateThread(
- NULL
- , stacksize
- , _thread_win32_runner
- , thread
- , 0 /*е*/
- , NULL);
+ThreadImplWin32::ThreadImplWin32()
+{
+}
- return m_Handle;
- }
+ThreadImplWin32::~ThreadImplWin32()
+{
+ if (!m_Handle) return;
+ ::CloseHandle(m_Handle);
+ m_Handle = 0;
+}
- void ThreadImplWin32::Join()
- {
- // ̵߳ȴ̷߳
- ::WaitForSingleObject(m_Handle, INFINITE);
- }
+bool ThreadImplWin32::Start(Threadable* thread, uint32 stacksize/*=0*/)
+{
+ assert(!IsRunning());
+ m_Handle = ::CreateThread(
+ NULL
+ , stacksize
+ , _thread_win32_runner
+ , thread
+ , 0 /*е*/
+ , NULL);
- void ThreadImplWin32::Kill()
- {
- ::TerminateThread(m_Handle, FALSE);
- }
+ return m_Handle;
+}
- void ThreadImplWin32::Sleep(uint ms)
- {
- ::Sleep(ms);
- }
+void ThreadImplWin32::Join()
+{
+ // ̵߳ȴ̷߳
+ ::WaitForSingleObject(m_Handle, INFINITE);
+}
- bool ThreadImplWin32::IsRunning()
- {
- if (m_Handle) {
- DWORD exitCode = 0;
- // https://blog.csdn.net/yuanmeng567/article/details/19485719
- ::GetExitCodeThread(m_Handle, &exitCode);
- return exitCode == STILL_ACTIVE;
- }
- return false;
- }
+void ThreadImplWin32::Kill()
+{
+ ::TerminateThread(m_Handle, FALSE);
+}
- bool ThreadImplWin32::IsCurrent()
- {
- return m_Handle == ::GetCurrentThread();
- }
+void ThreadImplWin32::Sleep(uint ms)
+{
+ ::Sleep(ms);
+}
+bool ThreadImplWin32::IsRunning()
+{
+ if (m_Handle) {
+ DWORD exitCode = 0;
+ // https://blog.csdn.net/yuanmeng567/article/details/19485719
+ ::GetExitCodeThread(m_Handle, &exitCode);
+ return exitCode == STILL_ACTIVE;
}
+ return false;
}
+bool ThreadImplWin32::IsCurrent()
+{
+ return m_Handle == ::GetCurrentThread();
+}
+
+namespace_end
+namespace_end
+
#endif // ASURA_THREAD_WIN32 \ No newline at end of file