#ifdef _WIN32#include "Thread.h"#include <windows.h>#include <process.h>struct OS_Thread_Priv{HANDLE hThread;};OS_Thread::OS_Thread(): m_Priv(NULL){}OS_Thread::~OS_Thread(){if(m_Priv){OS_Thread_Priv* priv = (OS_Thread_Priv*) m_Priv;delete priv;}}static DWORD WINAPI OS_Thread_Proc_Win32_1(LPVOID param){OS_Thread* thrd = (OS_Thread*) param;thrd->Routine();return 0;}static void OS_Thread_Proc_Win32_2(void* param){OS_Thread* thrd = (OS_Thread*) param;thrd->Routine();}static unsigned int WINAPI OS_Thread_Proc_Win32_3(void* param){OS_Thread* thrd = (OS_Thread*) param;thrd->Routine();return 0;}int OS_Thread::Run(){// ˽нṹOS_Thread_Priv* priv = new OS_Thread_Priv;if(!priv) return -1;m_Priv = priv;// ߳// DWORD nTheadId;// priv->hThread = _beginthreadex(NULL, NULL, OS_Thread_Proc_Win32, this, 0, &nTheadId);// priv->hThread = (HANDLE) _beginthread(OS_Thread_Proc_Win32, 0, this);unsigned int thrdaddr ;priv->hThread = (HANDLE) _beginthreadex(NULL, 0, OS_Thread_Proc_Win32_3, this, 0, &thrdaddr);if(priv->hThread == NULL){delete priv;m_Priv = NULL;return -1;}return 0;}void OS_Thread::Join(OS_Thread* thrd){OS_Thread_Priv* priv = (OS_Thread_Priv*) thrd->m_Priv;if(priv){WaitForSingleObject(priv->hThread, INFINITE);// CloseHandle(priv->hThread);// ɾԴdelete priv;thrd->m_Priv = NULL;}}void OS_Thread::Msleep(int ms){::Sleep(ms);}void OS_Thread::Sleep(int s){::Sleep(s * 1000);}int OS_Thread::Routine(){return 0;}#endif //_WIN32
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。